2017-06-21 6 views
1

MySQLの場合 mysql binlogs(任意の数のログでもよい)を自動的に取得し、それらをmysqlサーバに適用するプロセスをスクリプト化したいとします。ディレクトリ内のファイルのリストを呼び出して1行に渡します

`>dir C:\binlogs 
       file1 
       file2 
       file3 
       file4 
    ` 

` mysqlbinlog utility command is ` 

    `> mysqlbinlog.exe file1 file2 file3 file4 | mysql -uroot ` 

どのように私は、スクリプト、このプロセスは、代替の可能性があり、バッチファイルに

を使用してください: > mysqlbinlog.exe file1 > file.sql > mysqlbinlog.exe file2 >> file.sql > mysqlbinlog.exe file3 >> file.sql > mysqlbinlog.exe file4 >> file.sql

`> mysql.exe -uroot < file.sql` 

どれだけのスクリプトに分かりませんこれはバッチを経由して

答えて

1
@echo off 
setlocal enabledelayedexpansion 
set filelist= 
for %%# in (*) do set filelist=!filelist!"%%#" 
echo %filelist% 

このスクリプトは、現行ディレクトリ内のすべてのファイルを次の形式で1行に出力します。"file1" "file2" "file3"。末尾にスペースが1つありますが、その目的はパラメータとしてリストを使用するためです。それがない場合は、最後の文字カットオフ:!!

echo %filelist:~,-1% 
+1

末尾のスペースを発見することは困難ですが、私は(設定ファイルリスト=ファイルリストをいただきたいのいずれかの 'のため%%#(*)で行う" %%# ")'または 'for %%#in(*)はfilelist =!filelistを設定します! "%%#" 'と' echo%filelist:〜1% ' – LotPings

+0

ありがとうございます。私は本当に感謝しています...私はさらに私のスクリプトを達成することに近いです。 – primosad

+0

ディレクトリ内で一度に1つのファイルを呼びたい場合はどうですか? 'shell> mysqlbinlog.exe file1.txt> file.sql'' shell> mysqlbinlog.exe file2.txt >> file.sql' 'shell> mysqlbinlog.exe file3.txt >> file.sql' 'C:\> mysql -root primosad

関連する問題