【发布时间】:2017-06-30 21:41:34
【问题描述】:
我正在尝试重命名我的文件以删除任何会导致脚本出现问题的字符。这适用于&符号和感叹号,但当文件有百分号时,它不会显示在变量开头。如何通过for循环传递带有特殊字符的文件?
for %%v in (*) do call :validate "%%v"
exit /b
:validate
set "original=%~nx1"
set "newtitle=%original:!=%"
set "newtitle=%newtitle:&=and%"
setlocal enabledelayedexpansion
set "newtitle=!newtitle:%%= percent!"
if not "%newtitle%"=="%original%" ren %1 "%newtitle%"
【问题讨论】:
-
你见过这种语法吗?
Set "Var=String" -
是的,为什么?它没有帮助。
-
还是没有。使用 %% 生成的变量为空,使用 ^% 保持不变。
-
@Johnny,我建议您将其用作良好做法。
-
尝试使用
setlocal enabledelayedexpansion启用延迟扩展,然后使用set foo=!bar:%%= percent!。
标签: batch-file escaping invalid-characters