|
|
あるフォルダ配下にある複数のサブフォルダに対して、順次以下の動作を行うバッチを作成しようとしています。 ・サブフォルダ配下の start.dat に内容があり、end.dat には 内容がない状態であれば(※1)、data.dat を data_save.dat に コピーする。 以下のDOSコマンドを書いてみたのですが、(※1)の判断がうまく出来ません。 ----------------------------------------------------- for /F %%a in ('dir /ad /b') do ( echo "%%a" cd %%a if exist start.dat ( if exist end.dat ( for /F "tokens=1*" %%s in (start.dat) do set stext=%%s for /F "tokens=1*" %%e in (end.dat) do set etext=%%e if not "%stext%"=="" ( if "%etext%"=="" ( echo Match! REM copy data.dat data_save.dat ) ) ) ) cd .. REM set stext= REM set etext= ) ----------------------------------------------------- 実行フォルダ + AAA | +- start.dat 1byte | +- end.dat 0byte + BBB +- start.dat 0byte +- end.dat 0byte という状態で実行しました。 #期待としては、AAAのフォルダを処理する際にのみ「Match!」が表示される。 ところが1回目の実行ではどちらのフォルダもMatch!が表示されず、2回目はどちらも表示されてしまいます。 変数がクリアされていない成果と思い、上記でREMでコメントアウトしているsetの箇所を有効にすると、まったくMatch!が表示されなくなってしまいました。 何が問題か、お分かりの方がいらっしゃいましたら教えていただけませんでしょうか。 環境はWin2000Pro の DOS 5.00.2195です。 |
|
|
|
|
|
|
|
|