CMD中的嵌套FOR循环

时间:2014-05-25 09:37:28

标签: loops batch-file for-loop cmd nested

以下在命令行中有效,但第二个在批处理脚本中失败。失败我的意思是它立即退出.Bat。甚至不会在FOR /F ......执行行之后立即停在PAUSE。

控制台:

FOR /F "TOKENS=1 delims="  %I IN ('Dir *.Properties /B') DO (If NOT EXIST ..\Working\%~nI_ru.properties copy %~nI.properties ..\New_Files\%~nI_ru.properties)

批处理文件:

FOR /F "TOKENS=1 delims=" %%I IN ('Dir *.Properties /B') DO (If NOT EXIST ..\Working\%%~nI_ru.properties copy %%~nI.properties ..\New_Files\%%~nI_ru.properties)

它正在比较两个软件版本并选择那些' new'属性文件可用,并将文件名更改复制到New_File目录。 ThisIsANewFile.properties被复制为ThisIsANewFile ** _ ru **。属性,即_ru附加到FileName

感谢任何知道我做错了什么的人,

1 个答案:

答案 0 :(得分:0)

似乎您和脚本很难找到其尝试复制的文件,因为批处理文件通常在C:\Windows\System32\开始尝试添加cd /d %~dp0for /f循环之前。像这样:

cd /d %~dp0
FOR /F "TOKENS=1 delims=" %%I IN ('Dir *.Properties /B') DO (If NOT EXIST ..\Working\%%~nI_ru.properties copy %%~nI.properties ..\New_Files\%%~nI_ru.properties)

%~dp0为您提供调用批处理文件的位置。见%~dp0 SO link

您也可以使用绝对路径。例如Dir C:\MyApp\*.Properties /B