这是另一种方法。在 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,它们可能更容易编写。一定要有exit /b
之前的VBS。
第二个选项速度较慢,它会删除当前写入的空行。
@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)