【问题标题】:Nested FOR Loop in CMD在 CMD 中嵌套 FOR 循环
【发布时间】:2014-05-25 09:37:27
【问题描述】:

以下在命令行中有效,但第二个在批处理脚本中失败。失败是指它立即退出 .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_File 目录。 ThisIsANewFile.properties 被复制为 ThisIsANewFile**_ru**.properties,即 _ru 附加到文件名

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

【问题讨论】:

  • 请用代码标签包围您的代码
  • 您的文件名是否包含空格或& 字符?如果是这样,则需要引用这些条款。打开一个 cmd 窗口并启动批处理文件。您将看到错误消息。

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


【解决方案1】:

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

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

【讨论】:

  • 以管理员身份运行的批处理文件仅在C:\Windows\System32 开始。
猜你喜欢
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 2020-10-09
  • 2013-10-26
  • 1970-01-01
相关资源
最近更新 更多