這是另一種方法。在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)
非常感謝您的快速回答。我有一個新問題。保存的vbs文件也在工作。但是,當我打開批處理文件,然後它不啓動vbs文件,它只是簡單地啓動CMD,我不知道爲什麼,你能幫我嗎? –
不客氣,但由於您沒有提供批處理文件的代碼,該代碼嘗試調用您的意思,那麼我無法知道問題出在哪裏,也許您會考慮標記此答案作爲'接受'併爲你的新問題提出一個新的問題,我不會對你的新問題抱歉,感謝閱讀和原諒我的英語。 – ElektroStudios
好吧,我認爲我將其標記爲Accepted。我寫了一個新問題,希望你能看到正在發生的事情。如果你想要,你可以自己嘗試。 –