作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Windows 2012 R2 上使用 VBS 我尝试传递命令行参数 isActive="false"
,但无法让等号出现在命令行中。
创建一个虚拟批处理文件,例如 test.bat
echo %1
Pause
然后在创建的VBScript中
Set oShell = WScript.CreateObject("WSCript.Shell")
oShell.CurrentDirectory = "C:\test"
'strEqual = Chr(61)
strCommand = "test.bat" & " " & "isActive=" &"""false"""
return = oShell.Run(strCommand, 1, True)
Set oShell = Nothing
我得到isActive“false”但没有等号。我尝试过将其分离为独特的值像 & Chr(61) &
并尝试使用 /
和 \
以及 //
和 进行转义等号之前和之后的\\
。我尝试将 strEqual = Chr(61)
用作变量。
我不知道如何在传递到命令 shell 时使 =
成为字符串的一部分。我可以将其写入文本文件并写入等号,但不能写入 shell。
最佳答案
您观察到此行为是因为 CMD 不仅使用空格和制表符,还使用逗号、分号和 =
字符,如 parameter delimiters 。这意味着 isActive="false"
被解析为 2 个不同的参数:isActive
和 "false"
。如果您希望将其解析为单个参数,则需要将整个键/值对放在引号中:“isActive = false”
。
请注意,VBScript 字符串文字中的双引号必须通过加倍来转义。如果您需要在参数的值部分引起双引号,只需添加另一组转义双引号即可。
Set oShell = CreateObject("WScript.Shell")
strCommand = "test.bat ""isActive=""false"""""
return = oShell.Run(strCommand, 1, True)
也不需要连接字符串文字(除了当您想要换行长字符串时出于可读性原因)。只需将您的命令定义为单个字符串即可。
关于batch-file - 如何在VBS Shell命令参数中转义等号=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53314744/
我是一名优秀的程序员,十分优秀!