好的,设置如下:
我有大量具有以下格式的文本文件:
filename## time Description of file with spaces
我正在尝试使用 for 循环使用文件描述重命名磁盘上的实际文件:
FOR /F "tokens=1,2,*" %%a IN (%1) DO call :rename %%a %%b "%%c"
goto :eof
:rename
set origfilename=%1
set last2=%1:~-2%
set time=%2
set "multiword=%~3"
ren %origfilename%.ext "%last2%_%time%_%multiword%.ext"
set origfilename=
set last2=
set time=
set multiword=
这是正在发生的事情:
last2 永远不会拾取原始文件名的最后 2 个字符,如果我在 DO 之后回显 %3 而不是调用 :rename,它具有带空格的完整标记。当我尝试在循环中使用 %3 时,它只包含 %3 的第一个标记。我尝试在 for 之前使用 setlocal EnableDelayedExpansion,但它没有按预期工作。
我是否试图一次做太多事情?谢谢您的帮助!