我有两个 bat 文件,我需要将三个参数从一个 bat 文件传递到另一个。但是,如果参数以“!”结尾未收到参数
调用者.bat
impl.bat param1 param2! param3
impl.bat
echo %1
echo %2
echo %3
运行 caller.bat 后的预期结果:
param1
param2!
param3
运行 caller.bat 后的实际结果:
param1
param2
param3
任何人都可以帮助我如何实现实际结果吗?
最佳答案
正如其他答案所说,可以禁用延迟扩展,但没有必要显示感叹号。
将感叹号(和其他特殊字符)放入变量中很重要。
然后你可以完美地使用它延迟扩展
示例
@echo off
set "param1=%~1"
set "param2=%~2"
setlocal EnableDelayedExpansion
echo Works: !param1! !param2!
echo FAILS: %param1% %param2%
用
调用myBatch.bat arg1! "arg2!<>&"
延迟扩展的优点是可以处理任何内容而没有副作用,因为扩展的内容将不再被解析。
在许多情况下,百分比扩展会失败,因为内容也会针对特殊字符进行解析
关于windows - 如何将以 "!"结尾的参数传递给另一个bat文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30363385/