gpt4 book ai didi

batch-file - 如何在VBS Shell命令参数中转义等号=

转载 作者:行者123 更新时间:2023-12-02 20:12:16 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com