0

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

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

我的第一个参数(%1)是一个加密的身份验证 id,这个 id 包括两个= sings 结尾

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

结果我无法按预期运行应用程序。

请给我一些关于如何解决这个问题的想法

——兰加纳

4

2 回答 2

0

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

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

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

start "" "abc.exe" a$deD343aD5== param2 param3 param4
于 2012-06-13T19:43:31.620 回答
0

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

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

由调用者将值括在引号中。所以如果第一个参数应该是 a$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
于 2012-06-13T21:32:25.573 回答