以下在命令行中有效,但第二个在批处理脚本中失败。失败我的意思是它立即退出.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
感谢任何知道我做错了什么的人,
答案 0 :(得分:0)
似乎您和脚本很难找到其尝试复制的文件,因为批处理文件通常在C:\Windows\System32\
开始尝试添加cd /d %~dp0
在for /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