2011-06-20 11 views
2

私の質問は、この作品を作る方法です?2番目のセクションのサイクルでパイプを作る方法は?

FOR /F %pam IN ('echo show databases; ^| mysql -ubackup -h33.33.33.33 -pmysecrethaha') DO (mysqldump --add-drop-database -C --lock-all-tables -pmysecrethaha -ubackup -h33.33.33.33 %pam% | C:\Program0x20Files\7-Zip\7z.exe a -si -bd G:\mysql\redmine\%today%\%pam%.7z) 

このコマンドは別々のファイルに各DBのダンプを行う必要がありますが、私はこのエラーを取得:

"a was unexpected at this time." 

あなたはどう思いますか?

+0

データベース名にスペースが含まれていないことを確認してください。さもなければ、ループ変数の出現を囲む二重引用符を使用するか、それが含まれる式の周りに二重引用符を使用してください。 –

答えて

3

として、私はそれが笑コマンドの1つのLONGラインで言いたいまず第一に、このテストバッチを使用してください。

FOR /F "tokens=* USEBACKQ" %%a IN (`echo show databases; ^| mysql -ubackup -h33.33.33.33 -pmysecrethaha`) 

ちょうどUSEBACKQオプションを使用しての習慣を作り、そしてバック引用符であなたのコマンドを置くだけの場合にはあなたが持っている...:として

第二に、安全対策のために、ループのためにあなたを開始コマンドライン引数またはこのFOR/Fコマンドループ内にスペースを含むファイルパスに引用符を使用する。第三に

、PAは、FORループでの一時変数のための単一の文字を使用する、述べたように(a〜zまたはA〜Zの大文字と小文字の区別など%% OR %% A)

その後いつでも、あなたがその変数を呼び出して、あなただけの参照それは例えばです変数が%% aであれば、%% aで呼び出すことができます。

+0

完璧! ありがとう! – Psychozoic

1

%pam%を%% aに変更します。新しい行のループの中にコマンドを置くと、パイプは完全に動作するはずです。

はサンプル

FOR /F "tokens=*" %%a IN ('dir /b /od *.txt') DO (
    type %%a | more 
) 
関連する問題