【发布时间】:2019-04-25 16:56:34
【问题描述】:
从 Windows 命令行将包含感叹号 (!) 的参数传递给 groovy 脚本会被删除,因为 Windows 正在尝试使用延迟扩展来扩展变量名(请参阅this、this 和 @ 987654323@)。发布了很多包含这些解决方案之一的解决方案:
- setlocal ENABLEDELAYEDEXPANSION
- 转义“带引号^!”
- 不带引号转义^^!
这些都是公认的答案,所以显然它在某些情况下有效,但对我不起作用。这是我在 Windows 10 Professional 上遇到的行为:
C:\sof>type cmdtest.groovy
PASSWD=args[0]
println PASSWD
C:\sof>groovy cmdtest.groovy foopasswd!
foopasswd
C:\sof>groovy cmdtest.groovy foopasswd^^!
foopasswd
C:\sof>groovy cmdtest.groovy "foopasswd^!"
foopasswd
C:\sof>setlocal DisableDelayedExpansion
C:\sof>groovy cmdtest.groovy foopasswd!
foopasswd
C:\sof>groovy cmdtest.groovy foopasswd^^!
foopasswd
我认为这是在 groovy.bat 中以某种方式发生的,所以我也尝试将 setlocal DisableDelayedExpansion 添加到 groovy.bat,但它也没有工作。
能否以某种方式告诉我让上述cmdtest.groovy 尊重!的诀窍?
【问题讨论】:
标签: batch-file groovy