【问题标题】:SETLOCAL ENABLEDELAYEDEXPANSION , Interrupt SETLOCAL ENABLEDELAYEDEXPANSION, SETLOCAL ENABLEDELAYEDEXPANSIONSETLOCAL ENABLEDELAYEDEXPANSION , 中断 SETLOCAL ENABLEDELAYEDEXPANSION, SETLOCAL ENABLEDELAYEDEXPANSION
【发布时间】:2023-06-09 21:58:01
【问题描述】:

NOTE:这不是重复的!的"Temporarily interrupt SETLOCAL"

我希望能够SETLOCAL ENABLEDELAYEDEXPANSION 然后做某事,然后ENDLOCAL ENABLEDELAYEDEXPANSION 做其他事情(7z 命令)然后SETLOCAL ENABLEDELAYEDEXPANSION 再次在.bat 中!因为 7z.exe 不允许SETLOCAL ENABLEDELAYEDEXPANSION。看到了吗?

代码:

SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!
7z e -o"C:\test" -i!*.jar "C:\*.zip"

输出:
hi!
Error: incorrect command line

当我将代码更改为:

Echo hi!
7z e -o"C:\test" -i!*.jar "C:\*.zip"

有效!!!!!!

这是我目前中断SETLOCAL ENABLEDELAYEDEXPANSION的代码,不幸的是它不起作用。

SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!
Endlocal
7z e -o"C:\test" -i!*.jar "C:\*.zip"
SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!

我想把它放在一个需要SETLOCAL ENABLEDELAYEDEXPANSION 运行的不同的.bat 中

【问题讨论】:

  • 你的第一个。样本输出 hi 不是 hi!

标签: windows batch-file 7zip


【解决方案1】:

你可以这样解决你的问题:

set bang=!
SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!
7z e -o"C:\test" -i!bang!*.jar "C:\*.zip"

请确保在禁用延迟扩展时执行set bang=! 命令。

【讨论】:

  • 但是你也应该把回显线改成echo hi!bang!
【解决方案2】:

7zip 没有延迟扩展的问题。
是感叹号,在7z看到之前会从行中去掉。

你只需要逃脱它们。

SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi^^!
7z e -o"C:\test" -i^^!*.jar "C:\*.zip"

【讨论】: