2016-10-16 99 views
0

批次含量:執行特定的vbs從批處理文件文件

echo Set wshShell =wscript.CreateObject("WScript.Shell")>"C:\Users\Riccardo\Desktop\prova.vbs" 
<nul set /p =wshshell.sendkeys ^"^<nul set ^/p ^=>>"C:\Users\Riccardo\Desktop\prova.vbs" 
Type "C:\Users\Riccardo\Desktop\prova.txt">>"C:\Users\Riccardo\Desktop\prova.vbs" 
echo {bs}^>^"^"C:\Users\Riccardo\Desktop\prova.txt^"^"{enter}^">>"C:\Users\Riccardo\Desktop\prova.vbs" 
wscript "C:\Users\Riccardo\Desktop\prova.vbs" 

VBS的生成是:

Set wshShell =wscript.CreateObject("WScript.Shell") 
wshshell.sendkeys "<nul set /p =La#{bs}>""C:\Users\Riccardo\Desktop\prova.txt""{enter}" 

的prova.txt包含:

La#

從執行該行之後新的命令提示符會話:

wscript "C:\Users\Riccardo\Desktop\prova.vbs" 

的prova.txt成爲

La

但如果從批處理執行同一行上面:

wscript "C:\Users\Riccardo\Desktop\prova.vbs" 

什麼也沒有發生!

我該如何解決這個問題?

+3

無法重現。你能否創建一個沒有硬編碼路徑的[mcve],這樣每個人都可以看到你的問題? –

+0

你好。總之,我需要通過批處理文件執行my.vbs文件。 在命令提示符下輸入代碼: wscript「C:\ Users \ Riccardo \ Desktop \ prova.vbs」 它可以工作,但批量不工作 –

+5

哇,一個批處理腳本創建一個VBScript來「鍵入」批處理命令通過'SendKeys'(使用'set/p'來寫入文件)。這是我在一段時間以來看到的最醜陋的事情之一。請清除這種可憎的所有痕跡,並重新開始。你試圖解決的實際問題是什麼? –

回答

0

嘗試調用腳本像這樣:

C:\Users\Riccardo\Desktop\prova.vbs 

如果不起作用,將目錄更改爲您的桌面,並調用vbs

cd C:\Users\Riccardo\Desktop\ 
prova.vbs 

這應該在批處理工作文件。

+0

行不通,我着手解決另一個問題。 –

0

我解決了我的問題。了 「Prova.bat」 的代碼是:

echo Set wshShell =wscript.CreateObject("WScript.Shell")>prova.vbs 
echo wshShell.Run "cmd">>prova.vbs 
echo WScript.Sleep 250>>prova.vbs 
<nul set /p =wshShell.sendkeys ^"^<nul set ^/p ^=>>prova.vbs 
Type prova.txt>>prova.vbs 
<nul set /p ={bs}^>prova.txt{enter}exit{enter}^">>prova.vbs 
wscript prova.vbs 
DEL /q prova.vbs 2> NUL 

的 「Prova.vbs」 而生成和刪除的是:

Set wshShell =wscript.CreateObject("WScript.Shell") 
wshShell.Run "cmd" 
WScript.Sleep 250 
wshShell.sendkeys "<nul set /p =La#8{bs}>prova.txt{enter}exit{enter}" 

的 「Prova.txt」 之前:

La#8 

的「Prova.txt」現在:

La# 

我找到了路o f使用bat + vbs文件在一個txt文件中插入退格字符! ;-)我希望這樣的解決方案可以幫助別人。