簡體   English   中英

.vbs腳本將無法批處理運行/如何以靜默方式運行批處理

[英].vbs script won't run batch / how to run batch silently

我有一個要靜默運行的批處理文件。 所以,我一直在閑逛,拿出下面的代碼... invMybatchfile.vbs

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

該代碼在我的桌面(Window 7 32bit)上可以運行,但是由於某些原因,該腳本在服務器計算機(Windows Server 2008 R2)上不起作用。 當我單擊invMybatchfile.vbs時,dos窗口立即彈出並關閉,並且Mybatchfile.bat根本不執行。 (如果我只是在服務器計算機上運行Mybathfile.bat,它可以正常工作,因此批處理文件不是這里的問題。)

所以我的問題是,有人知道我為什么會遇到這個問題嗎?

要么

還有其他方法可以不使用.vbs文件或安裝其他軟件而以靜默方式啟動批處理文件(這種方法沒有最小化)?

感謝您的幫助JB

您的示例代碼永遠不會在任何計算機上運行,​​因為您將變量名稱聲明為“ 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

...或通過以下方式將當前目錄存儲在var中:

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命令行應用程序來執行。

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

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

我認為您需要通過cmd.exe運行它:

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

在此處此處檢查類似的問題以獲取更多信息。

您是否嘗試過使用RunAs?

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

由於它可以在Windows 7上運行,但不能在Server 2008 R2上運行,所以這聽起來像是我的權限問題。

暫無
暫無

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

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