如何使用给出的ExecWait脚本删除Default文件夹内除Bookmarks外的文件
修正方案
原代码失效原因
- cmd 执行单行命令串时会提前一次性替换所有
%包裹的变量,你在同一行里先set定义变量再用%读取的操作无法拿到刚设置的变量值 - NSIS 脚本中需要转义
%符号,要传递给 cmd 的%必须写为%%才不会被 NSIS 提前解析处理 - 原目录匹配规则缺少反斜杠,
%sourcedir%*无法正确匹配Default文件夹下的内容,需要改为%sourcedir%\*
修正后可直接运行的代码
ExecWait '"$SYSDIR\cmd.exe" /c "SETLOCAL ENABLEDELAYEDEXPANSION & SET "sourcedir=$LOCALAPPDATA\Google\Default" & SET "keepfile=Bookmarks" & FOR %%a IN ("!sourcedir!\*") DO IF /i NOT "%%~nxa"=="!keepfile!" DEL /f /q "%%a""'
补充说明
如果需要同时删除Default目录下除了Bookmarks之外的子目录,可以将FOR命令调整为FOR /d %%a IN ("!sourcedir!\*")搭配RD /s /q命令实现,和上面的文件删除命令组合使用即可覆盖全目录清理需求。
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

