2013-04-25 41 views
0

我有一個批處理文件,我想靜默運行。 所以,我goolging四周,拿出下面的代碼... invMybatchfile.vbs.vbs腳本不會運行批處理/如何以無提示方式運行批處理

Dim curPath 
curPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") 
Set WshShell = CreateObject("WScript.Shell") 
cmds=WshShell.RUN(sCurPath & "\Mybatchfile.bat", 0, True) 

此代碼我的臺式機(支持微軟Windows 7 32位)上工作,但由於某些原因,這個腳本不起作用在服務器計算機上(Windows Server 2008 R2)。當我點擊invMybatchfile.vbs時,dos窗口就會彈出並立即關閉,Mybatchfile.bat根本不會被執行。 (如果我只是服務器計算機上運行Mybathfile.bat,它工作得很好,所以批處理文件是不是問題就在這裏。)

所以我的問題是,沒有人知道爲什麼我有這個問題?

OR

是否有任何其他的方式來默默啓動批處理文件(沒有最小化,我知道這種方式),與從使用.vbs文件或安裝其他軟件?

感謝您的幫助 JB

回答

-1

您是否嘗試過使用運行方式?

cmds=WshShell.RUN("runas /noprofile /user:mymachine\administrator " _ 
    & sCurPath & "\Mybatchfile.bat", 0, True) 

由於它適用於Windows 7,但不適用於Server 2008 R2,這聽起來像是一個權限問題。

1

你的例子的代碼永遠不會在任何機器上運行,因爲你聲明變量名稱爲「curPath」並將vlaue賦值給「CurPath」,但你試圖將它與名稱「sCurPath」一起使用變量不存在於你的代碼中)。

另外你不需要設置當前的工作目錄,因爲當你啓動一個文件時,shell在工作目錄中搜索這個文件,所以這就是你需要的所有代碼,只有一行:

CreateObject("WScript.Shell").RUN "Mybatchfile.bat", 0, True 

但是,如果你有興趣存儲或使用當前的工作目錄,你有一個返回當前目錄的方法任何奇怪的理由:

.CurrentDirectory

然後你可以使用的方法本方式:

Set Shell = CreateObject("WScript.Shell") 
Shell.RUN Shell.CurrentDirectory & "\Mybatchfile.bat", 0, True 

...或者當前目錄保存在一個變種是這樣的:

Set Shell = CreateObject("WScript.Shell") 
CurDir = Shell.CurrentDirectory & "\" 
Shell.RUN CurDir & "Mybatchfile.bat", 0, True 

MSDNhttp://msdn.microsoft.com/en-us/library/3cc5edzd%28v=vs.84%29.aspx

編輯:

關於運行無聲的文件,你也可以使用NirCMD commandline a pplication。

NirCMD exec hide "Path to Batch File\Batch File.bat" 

官方網站http://www.nirsoft.net/utils/nircmd2.html

0

我想你需要通過CMD運行它。EXE:

WshShell.Run("%COMSPEC% /c " & CurPath & "\Mybatchfile.bat", 0, True) 

檢查類似的問題herehere以獲取更多信息。