2017-06-26 12 views
1

週ごとのバックアップを作成するためのバッチファイルがあります。私は出力フォルダをフォーマットし、ログをエコーするために使用する変数mydateを作成します。私は、ログファイルにリダイレクトされ、各ラインでのバッチを実行すると、それが正常に動作します:Windowsのバッチファイルで変数が出力されない

set mydate=%date:~10,4%-%date:~4,2%-%date:~7,2% 
echo My Date is %mydate% >>TestEchoLog.txt 
echo Backup triggered at %mydate% >>TestEchoLog.txt 

Cmdをウィンドウ:

D:\>set mydate=2017-06-26 
D:\>echo My Date is 2017-06-26 1>>TestEchoLog.txt 
D:\>echo Backup triggered at 2017-06-26 1>>TestEchoLog.txt 

TestEchoLog.txt:

My Date is 2017-06-26 
Backup triggered at 2017-06-26 

しかし、私の場合コマンドを単一のリダイレクトにラップすると、私の変数は動作を停止します:

>>TestEchoLog.txt (
set mydate=%date:~10,4%-%date:~4,2%-%date:~7,2% 
echo My Date is %mydate% 
echo Backup triggered at %mydate% 

Cmdをウィンドウ:

D:\>(
set mydate=2017-06-26 
echo My Date is 
echo Backup triggered at 
) 1>>TestEchoLog.txt 

TestEchoLog.txt:

My Date is 
Backup triggered at 

私はこれをどのように修正することができますか?明らかに回避策は、すべての行にリダイレクトするだけですが、むしろそうではないほど長い命令セットです。

ありがとうございます!

+1

[遅れ拡張](http://ss64.com/nt/delayedexpansion.html)をチェックしてください... – aschipfl

答えて

0

は、ファイルにそれをエコーする前に、変数を設定します。

set mydate=%date:~10,4%-%date:~4,2%-%date:~7,2% 
(
echo My Date is %mydate% 
echo Backup triggered at %mydate% 
)>>TestEchoLog.txt 
関連する問題