1

我正在尝试在特定文件夹中重命名具有某种格式的文件。我会通过创建一个带有文件名的文本文件并在循环的 for 语句中引用该文本文件来做到这一点。当我在 cmd 中逐行运行命令时,它工作正常,但是当我尝试作为批处理文件运行时,它不起作用。批处理文件保存在我想要完成操作的文件夹中,所以我假设我不需要声明目录。任何帮助将非常感激!

dir > file.txt
for /f "tokens=1,2,3,4 delims=_." %i in (file.txt) do ren "%i_%j_%k.%l" "%date:~10%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s_%k.%l"

:END
4

1 回答 1

2

在 cmd 脚本中编写 for 循环时,for 变量(例如:%i)需要用额外的 % 进行转义,因此它变为:

for /f "tokens=1,2,3,4 delims=_." %%i in (file.txt) do ren "%%i_%%j_%%k.%%l" "%date:~10%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s_%%k.%%l"

要了解更多工作方式,请输入for /?cmd。

有趣的部分:

要在批处理程序中使用 FOR 命令,请指定 %%variable 而不是 %variable。变量名区分大小写,因此 %i 与 %I 不同。

于 2013-08-26T16:33:06.220 回答