簡體   English   中英

批處理文件調用VBS,參數中帶有“帶引號的空格”

[英]Batch file call VBS with “quoted spaces” in argument

我正在嘗試創建一個批處理文件,以從TXT文件重新啟動多台計算機。 只要/ c“在此處注釋”參數沒有空格,一切都可以正常工作。 如果我通過“測試”作為注釋,則按預期在彈出窗口中看到“測試”。 如果我通過“測試空間”作為注釋,則在彈出窗口中仍只會得到“測試”。 禁用@echo時,我已驗證注釋在傳遞給VBS時保留了空格,因此我認為問題是我正在運行“ invisible.vbs”腳本,以防止另一個CMD窗口打開和掛起原始BAT。腳本。

我希望能夠運行類似於以下命令的最終命令:

shutdown / r / m \\\\ 127.0.0.1 / t 120 / c“您的計算機將在兩分鍾內關閉以執行維護任務”

任何幫助,將不勝感激!

restart.bat的基本部分:

for /f "tokens=1-3" %%c in (%FilePath%) do WScript /nologo "%windir%\myscripts\invisible.vbs" "shutdown /r /m \\%%c /t %delay% /c %message%"

我也嘗試過在%message%周圍添加額外的引號,但沒有成功:

for /f "tokens=1-3" %%c in (%FilePath%) do WScript /nologo "%windir%\myscripts\invisible.vbs" "shutdown /r /m \\%%c /t %delay% /c "%message%""

invisible.vbs腳本(在StackExchange上找到):

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

任何幫助將不勝感激!

編輯:建議使用您的第三個方法,我收到腳本錯誤:

Script:    C:\Windows\myscripts\invisible.vbs
Line:      1
Char:      46
Error:     The system cannot find the file specified
Code:      80070002
Source:    (null)

編輯2:我也嘗試了第一種方法,現在我收到了vbscript echo彈出窗口,其中包含我希望發送的正確命令,但是命令沒有發送。 我離程序員還很遠,我使用的唯一VBS是我在網上找到的東西。 感謝您到目前為止提供的幫助,但仍然無法解決。

你做不到。 WScript中Arguments對象背后的邏輯似乎刪除了引號。

所以,我至少可以考慮三種選擇

1)最簡單:使用另一個字符作為引號的指示符,並在vbs腳本中將其替換為引號

cmd code : cscript myscript.vbs "shutdown /r /m \\%%c /t %delay% /c '%message%'"
vbs code : WScript.CreateObject("WScript.Shell").Run replace(WScript.Arguments(0),"'",""""), 0, False

唯一的問題是在某個時候,可能需要將占位符用作真實字符。

2)最復雜:使用wmi檢索當前進程ID,並從此處檢索腳本的原始命令行。 如果有興趣的話,很多代碼在StackOverflow上有一些不錯的示例。

3)簡單,快速且與眾不同。 使用環境變量。 將命令保存到變量中,然后將變量名傳遞給腳本。 從中檢索變量內容並使用它

cmd code : set "runVar=shutdown /r /m \\%%c /t %delay% /c "%message%""
           wscript //nologo "%windir%\myscripts\runInvisible.vbs" runVar

vbs code : With WScript.CreateObject("WScript.Shell") : .Run .ExpandEnvironmentStrings("%" & WScript.Arguments(0) & "%"), 0, False : End With
cmd code or bat code:
wscript //nologo invisible.vbs "hello world" 0

不知何故,最后的零會導致引號之間的部分仍被視為一個參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM