for/dのリストでいくつかのフォルダを実行し、そのフォルダの中で最も古いファイルをエコーします。最終的に、これはファイルを別のフォルダに移動するために使用されます。私が持っている問題は、コマンド全体を終了させずに/ fをエスケープすることができないということです。/fのfor/dのバッチファイルにネストする
@echo off
setlocal enableextensions disabledelayedexpansion
set basefolder=M:\somefolder\*
for /D %%D in (%basefolder%) do (
FOR /F %%I IN ('DIR %%D\* /B /O:-D') DO echo "%%I" & goto moved
:moved
)
これは私を得る ")予想外だった"
@echo off
setlocal enableextensions disabledelayedexpansion
set basefolder=M:\somefolder\*
for /D %%D in (%basefolder%) do (
FOR /F %%I IN ('DIR %%D\* /B /O:-D') DO echo "%%I" & exit /b
)
これ、当然のことながら、処理された最初のフォルダでコマンドを終了します。
誰かが実際にうまくいくかもしれないことを示唆することはできますか? cmd
がif defined
ための変数の現在の値を使用することを利用して
はいそれはバッチファイルと大きな問題だが:出口はすべてのループだけでなく、内側のものを終了します。そして 'goto'は同じことをします –
[バッチファイル入れ子のFor/Lループとそれらを終了する]の可能な複製(http://stackoverflow.com/questions/32214744/batch-file-nested-for-l-loops-and- exiting-them) –