2012-04-27 13 views
1

私はバッチファイルでループを持っている:変数をループでバッチすると、それぞれにcdできないのですか?

@echo off 
set logpath1=C:\path\to\first\log 
set logpath2=C:\path\to\second\log 
FOR %%G IN (%logpath1% %logpath2%) DO (
    pushd %%G 
    pushd ..\ 
    for %%D IN (%CD%) DO SET "dirname=%%~nxD" 
    popd 
    echo Will prefix files in %%G with %supername% 
    :: do operations. 
    popd 
) 

しかし、これは私の作業ディレクトリを変更していないようです。私は

C:\tmp\path\to 

からスクリプトを実行した場合、私は

Will prefix files in C:\path\to\first\log with tmp 
Will prefix files in C:\path\to\second\log with tmp 

私の目的は、複数のディレクトリにログファイルをzip圧縮することで取得します。 %cd%の代わりにchdir、cd/d、&〜pd0を試して、高低を検索しました。誰も私がなぜこれが動作しないのか教えてもらえますか?

答えて

2

は、バッチファイルの先頭に

​​

を入れて、ループ内で!CD!代わりの%CD%を使用しています。 %supername%の設定に応じて、!も使用する必要があります。

+0

Aha!遅れた拡張に関する文書を調べましたが、私はその概念を理解していなかったと思います。ありがとうジョー! – Dan

関連する問題