批处理文件
批处理文件使用
args.bat
是用于测试目的的:@echo off
echo Arguments 1 to 4:
echo.%~1
echo.%~2
echo.%~3
echo.%~4
批处理文件使用
~
来去除前导和尾随引号,它应该向用户显示以下值:Argument 1
This is "Argument 2".
对于第一个参数,很容易:
args.bat "Argument 1"
然而,对于第二个参数,无论我尝试什么转义序列(我在Stack Overflow上找到了几个),都无法正常工作:
// Didn't expect this to work, but for completeness
>args.bat "Argument 1" "This is "Argument 2"."
Arguments 1 to 4:
Argument 1
This is "Argument
2"."
使用双引号进行转义会在传递时保留双引号:
>args.bat "Argument 1" "This is ""Argument 2""."
Arguments 1 to 4:
Argument 1
This is ""Argument 2"".
使用插入符号进行转义:
>args.bat "Argument 1" "This is ^"Argument 2^"."
Arguments 1 to 4:
Argument 1
This is "Argument
2"."
使用反斜杠进行转义:
>args.bat "Argument 1" "This is \"Argument 2\"."
Arguments 1 to 4:
Argument 1
This is \"Argument
2\"."
请确保我尝试了很多其他方法(最终考虑暴力破解解决方案,但先提问),每个方法都会产生有趣的输出,但从未得到我想要的结果:
>args.bat "Argument 1" ^"This is ^^"Argument^" 2^^"."
Arguments 1 to 4:
Argument 1
This is "Argument" 2".
是否有可能在不更改批处理文件的情况下传递参数到我的批处理文件中?如果不行,是否有一种运行cmd
的特殊模式,使其按我想要的方式处理参数?
我已经看到了解决方案,可以进行双引号的搜索和替换,但我真的不想更改批处理文件。