我想将vbs文件保存在这样的批处理文件中:
echo set shell = createobject("wscript.shell")
wscript.sleep(1000)
shell.sendkeys("blablabla")
Shell.SendKeys "{Enter}"
wscript.sleep(1000) >"c:\folder\blablabla.vbs"
但批处理文件不起作用。如果我这样做(如果我在一行中键入vbs代码):
echo set shell = createobject("wscript.shell") wscript.sleep(1000) shell.sendkeys("blablabla") Shell.SendKeys "{Enter}" wscript.sleep(1000) >"c:\folder\blablabla.vbs"
然后vbs文件不起作用。 所以我的问题是:如何正确保存vbs文件,而不会让批处理文件认为我希望他做多个命令。
答案 0 :(得分:4)
这是另一种方法。 :::
在VBS中是无害的,并且像批量注释一样工作。让它特别好的是你不必担心逃避任何VBS代码。
我之所以选择:::
是因为它不太可能出现在批处理脚本的其他位置;而:
用于批处理标签,::
经常用作批处理注释。
::: set shell = createobject("wscript.shell")
::: wscript.sleep(1000)
::: shell.sendkeys("blablabla")
::: Shell.SendKeys "{Enter}"
::: wscript.sleep(1000)
findstr /b ::: "%~f0" >"c:\folder\blablabla.vbs"
以下是一些仅需要字符串来标记VBS开头的选项,因此如果处理大量VBS,它们可能更容易编写。请确保在VBS之前有exit /b
。
第二个选项较慢,它会删除当前写入的空行。
@echo off
setlocal
set "vbs=test.vbs"
for /f "delims=:" %%N in ('findstr /nb ":: begin VBS" "%~f0"') do set "skip=%%N"
(for /f usebackq^ skip^=%skip%^ delims^=^ eol^= %%A in ("%~f0") do echo %%A) >"%vbs%"
cscript /nologo "%vbs%"
del "%vbs%"
exit /b
:: begin VBS
set shell = createobject("wscript.shell")
wscript.sleep(1000)
shell.sendkeys("dir *.h*")
Shell.SendKeys "{Enter}"
wscript.sleep(1000)
第三个选项很快,但MORE会将标签转换为一串空格。
@echo off
setlocal
set "vbs=test.vbs"
for /f "delims=:" %%N in ('findstr /nb ":: begin VBS" "%~f0"') do set "skip=%%N"
more +%skip% "%~f0" >"%vbs%"
cscript /nologo "%vbs%"
del "%vbs%"
exit /b
:: begin VBS
set shell = createobject("wscript.shell")
wscript.sleep(1000)
shell.sendkeys("dir *.h*")
Shell.SendKeys "{Enter}"
wscript.sleep(1000)
答案 1 :(得分:3)
首选:
使用聚合操作符()
对您使用的命令进行组合,并使用Batch
在代码中转义冲突的^
运算符。
(
echo set shell = createobject^("wscript.shell"^)
echo wscript.sleep^(1000^)
echo shell.sendkeys^("blablabla"^)
echo Shell.SendKeys "{Enter}"
echo wscript.sleep^(1000^)
)>"c:\folder\blablabla.vbs"
第二选择
要在VBScript
中连接说明,您需要使用:
运算符,那么一体化的行代码应如下所示:
echo set shell = createobject^("wscript.shell"^) : wscript.sleep^(1000^) : shell.sendkeys^("blablabla"^) : Shell.SendKeys "{Enter}" : wscript.sleep^(1000^) >"c:\folder\blablabla.vbs"