将'='符号作为参数传递给bat文件

时间:2012-06-13 18:35:58

标签: batch-file argument-passing

我正在尝试使用以下代码从bat文件启动exe

start "" "abc.exe" %1 %2 %3 %4

我的第一个参数(%1)是加密的身份验证ID,此ID包括两个 = 在结尾处唱歌

我的问题是,每当我通过%1 参数时,这两个 = 签名都会被bat文件删除。

因此我无法像我期望的那样运行应用程序。

请告诉我如何解决这个问题

- Rangana

2 个答案:

答案 0 :(得分:0)

如果你启动一个exe程序,它应该能够解析它的所有命令。

因此,您应该确保您的参数确实包含预期的数据。

您可以使用硬编码参数进行尝试。

start "" "abc.exe" a$deD343aD5== param2 param3 param4

答案 1 :(得分:0)

批处理将以下字符视为参数分隔符:<space> <tab> , ; = <0xFF>。请注意,<0xFF>是一个不间断的空间。

将任何分隔符作为参数值的一部分包含在内的唯一方法是将参数括在双引号中。

由调用者将值括在引号中。因此,如果第一个参数应该是$ deD343aD5 ==,那么必须将您的批处理脚本调用为

scriptName "a$deD343ad5==" param2 param3 param4

如果您不想将引号传递给您的exe,那么您可以使用批处理脚本中的~修饰符修剪封闭引号。但是你必须要小心,因为像< > & |这样的特殊字符如果没有被引用或转义就会引起问题。

::This will preserve any enclosing quotes around each parameter
start "" "abc.exe" %1 %2 %3 %4

::This will strip any enclosing quotes around each parameter (if they exist)
start "" "abc.exe" %~1 %~2 %~3 %~4