无法使用批处理脚本写入 .vbs 脚本

Posted

技术标签:

【中文标题】无法使用批处理脚本写入 .vbs 脚本【英文标题】:Unable to use batch script to write to a .vbs script 【发布时间】:2021-02-07 02:47:51 【问题描述】:

我正在使用批处理脚本来创建和写入 .vbs 文件。 该文件名为 invisible.vbs。

这是创建和编写 .vbs 脚本的批处理脚本。

echo.>"C:\Users\LinFamily\Desktop\invisible.vbs"
echo CreateObject("Wscript.Shell").Run &WScript.Arguments(0)&,0,False >> invisible.vbs

第一行代码运行良好并创建了 invisible.vbs ,但脚本没有将第二行代码写入 invisible.vbs ,而是尝试像运行代码一样运行它。

我用了引号,

"CreateObject("Wscript.Shell").Run &WScript.Arguments(0)&,0,False" >> invisible.vbs

代码被写入invisible.vbs,但引号也被写入invisible.vbs,这不是我想要的。如果有引号,Invisible.vbs 将不起作用。

我尝试过使用括号,但这也不起作用。

有没有办法把代码写到invisble.vbs,最后不加引号?感谢您的帮助!

【问题讨论】:

【参考方案1】:

特殊字符 ) 和 & 需要 ^ 转义。

rem [ write all lines in one operation using parenthesis ]
> "invisible.vbs" (
echo(CreateObject("Wscript.Shell"^).Run ^&WScript.Arguments(0^)^&,0,False
)

【讨论】:

【参考方案2】:

您的代码中有与号什么都不做,这在 VBScript 的任何标准中都没有。简而言之,巫毒代码。这是非法的 VBScript 代码

与号和重定向在其他命令之前由 CMD exe 评估。所以它不会写它们。

所以代码不起作用的两个原因。

如果您尝试运行该 VBScript,则会显示 Line 1 Character 35 (&) Syntax Error

【讨论】:

以上是关于无法使用批处理脚本写入 .vbs 脚本的主要内容,如果未能解决你的问题,请参考以下文章

vbs脚本实现qq定时发消息(初级)

如何将多个变量从 VBS 传递到批处理脚本?

VBS脚本运行批处理文件,不在启动时运行[重复]

如何在vbs中设置可以在调用批处理脚本中读取的环境变量

如果批处理脚本无法写入输出文件,如何忽略错误

bat脚本隐藏窗口运行