我正在尝试通过 VB Shell 函数将参数传递给 BAT 文件。参数文本值看起来像这样说Hello&123
正如您注意到其中有一个“&”作为文本。但是 & 在 BAT 中被保留,所以我试图让它工作,但到目前为止没有成功。
我的 VB 6 代码是
Dim passwd
passwd = "Hello^&123"
retval = Shell("C:\test.bat " & passwd, vbNormalFocus)
我尝试了以下组合,但没有奏效。所以我不知道应该在 VB 6 中为变量 passwd 设置什么值,它将接受 Hello&123 作为 BAT 中的正确文本参数。
我收到的错误
passwd = "你好^&123"
Hello
'123' is not recognized as an internal or external command,
passwd = """你好^&123"""
"Hello^&123"
passwd = "你好&&123"
Hello
但是以上都没有用,因为我希望 %1 与 Hello&123 完全相同
任何进一步的帮助都会很棒。
编辑...
刚才的批处理文件只有 echo 命令。
@echo off
echo %1
pause
谢谢。
不是输入应该改变,而是处理应该改变。
解释
%~1
当参数被括起来时,去掉引号。set "arg=..."
是扩展的 SET 语法,它将内容括在引号中,但不将引号添加到变量中。`错误可能在批处理文件中。您正确传递了参数,但随后批处理获取了与号。您需要为批处理文件再次转义它。也许
^^^&
。^
是引号字符所以^^
=^
。所以 to
cmd
get^^^&
和 changes^^
to^
和^&
to&
所以最终结果是^&
. 当 CMD 读取您的批处理文件时,它会更改^&
为&
. 所以 CMD 需要读这两次。如果在提示符下输入,报价通常会更容易。
我只是在使用答案空间来展示最终的效果。用户马克是对的。
现在的BAT文件只有
现在看看结果。为了简单起见,我只是在命令提示符下调用 test.bat。