2012-06-13 148 views
0

我尝试使用下面的代码传递“=”号作为参数传递给一个bat文件

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

我的第一个参数(%1)是推出从一个bat文件一个exe加密认证ID,这个ID包括两个=唱歌在结束

我的问题是我每次经过%1个说法时,签署这两个=由bat文件删除。

因此,我无法按预期运行应用程序。

请给我如何如果你开始一个exe程序解决这个问题

--Rangana

+0

你真的使用这条线在批处理'开始“”“abc.exe”%1%2%3%4'开始'abc.exe'或者你使用像线'开始“ “”abc.exe“%param1%%param2%%param3%%param4%'?如果你真的使用'%1',它来自哪里并且它包含'=='? – jeb

+0

我使用它像启动“”“abc.exe”%1%2%3%4,它来自一个小程序,我试图从Web应用程序调用一个C#应用程序,这是一个单一的登录情况。我从applet中调用一个bat文件。 bat文件包含上面的代码。 –

回答

0

一些想法,它应该能够解析所有它的命令。

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

你可以用硬编码参数来试试它。

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

批次治疗以下字符作为分隔符参数:<space> <tab> , ; = <0xFF>。请注意0​​是一个不间断的空间。

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

这是由调用者用引号括起来的值。因此,如果第一个参数应该是$ 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 
相关问题