我正在尝试在特定文件夹中重命名具有特定格式的文件。我这样做是通过创建一个带有文件名的文本文件并在循环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
答案 0 :(得分:1)
在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"
要了解更多工作方式,请在cmd中输入for /?
。
有趣的部分:
要在批处理程序中使用FOR命令,请改为指定%%变量 %变量。变量名称区分大小写,因此%i不同 来自%I。