我遇到问题的部分脚本在这里:
setlocal enabledelayedexpansion
for /r %%a in (*) do (
cd "%%~dpa"
set /A count += 1
set fn=file!count!
%batchdir%\7z.exe a -mx9 -sdel -p"%password%" -mhe=on "!fn!.7z" "%%~nxa"
)
但是文件名变量不能正确处理带有感叹号的文件名。fn
%%~nxa
!
有没有办法解决这个问题?
谢谢。
编辑:改变fn
那%%~nxa
是问题
是的,启用延迟扩展会抑制未转义的感叹号。为了证明,请参见下面的简单脚本及其输出:
输出:
D:\bat\SU\1552202.bat
请参阅此答案(显示了两种使用感叹号处理此类数据的方法)。如果改进,您的脚本可以工作,例如: