我知道这是一个常见问题,但我无法解读其他问题中的答案和建议,以使我的特定脚本有效。
@echo on
setlocal EnableDelayedExpansion
set directory=%1
set file_list=%2
for /f "tokens=*" %%i in (%file_list%) DO (
set newName=!%%i:~0,5!
move "%directory%\%%i" "%directory%\!%newName%!s.jpg" )
endlocal
这给了我这个带有echo on
的输出set newName=!image.png:~0,5!
move "\\server\path\to\image.png" "\\server\path\to\!!s.jpg"
很明显newName在我需要时为null,所以在尝试将其剪切为5个字符时,我甚至无法解决最可能的语法问题。
谢谢!
答案 0 :(得分:1)
set "newName=%%i"
set "newName=!Newname:~0,5!"
您不能像metavariable
那样对%%i
进行子串。您需要将其分配给标准环境变量,然后使用指示的方法(delayedexpansion模式中的!var...!
子串,因为在代码块中需要更改变量值)
引号只是界定所涉及的字符串,以确保不包括该行上任何不可见的杂散空格。