我的 .bat 脚本有什么问题?

4

我正在尝试编写一个脚本,使用7-zip解压缩包含另一个.zip文件的.zip文件到当前目录并将其删除。

当我在命令提示符中输入时,一切都运行良好:

set 7ZIP="C:\Program Files\7-Zip\7zG.exe"
for %X in (*.zip) do start "Extracting..." /WAIT %7ZIP% x "%X" && del "%X"

然而,当我尝试在.bat文件中执行此操作(请注意%%),我会遇到一个奇怪的错误。

set 7ZIP="C:\Program Files\7-Zip\7zG.exe"
for %%X in (*.zip) do start "Extracting..." /WAIT %7ZIP% x "%%X" && del "%%X"

失败

有任何想法吗?


在截图中看起来是/WAIT ZIPX,但在这里输入的是/WAIT %7ZIP%--你是重新输入了内容还是从你的批处理文件中复制粘贴的? - sarnold
不,我只是双击了我的 .bat 文件,然后出现了这个。很奇怪,对吧? - Amil
非常好。至少你找出了可能的原因... - sarnold
1
我会下载一个不同的 shell。cmd 已经被放弃了,微软从未完成它。 - ctrl-alt-delor
嗯...我想是时候安装Cygwin了。 - Amil
1个回答

4
好的,我刚刚了解到,在.bat脚本(或start命令?)中不能以数字开头定义变量,因为这样是不起作用的:
set ZIP7="C:\Program Files\7-Zip\7zG.exe"
for %%X in (*.zip) do start "Extracting..." /WAIT %ZIP7% x "%%X" && del "%%X"

3
是的-批处理看到%7ZIP%中的%7%,并假定您正在尝试访问第7个命令行参数。有趣的是,如果启用延迟扩展并使用!7ZIP!代替,则可以正常工作。但最好永远不要创建以数字开头的环境变量。 - dbenham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接