2010-08-09 31 views
1

我有這2個文件a.vbs和a.bat每個只有一行。問題運行start..run.wscript a.vbs a.bat

a.vbs

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

a.bat

copy c:\blah\y.y c:\ 

當它的工作原理,它運行a.bat悄悄地在後臺,它確實該文件的副本。

我可以做start..run ... a.vbs a.bat 這很有效。 我可以打開一個命令提示符並做WScript的a.vbs a.bat

但不工作的事情,這是

開始... ...運行WScript的a.vbs a.bat

如果我把在a.vbs的MSGBOX,很明顯,運行。 但它看起來像使用該方法時,a.bat不會運行..

表格如何不起作用?

+0

只是想知道,你爲什麼要使用批處理文件,而不是簡單地調用['FileSystemObject.CopyFile'](http://msdn.microsoft.com /en-us/library/e1wf9e7w.aspx)從您的VBScript腳本? (或者這僅僅是一個虛擬的例子?) – Helen 2010-08-09 17:13:33

+0

一個虛擬或演示的例子..所以不必是批處理文件中的副本,可能是其他一些命令。但問爲什麼這種方法不起作用。 – barlop 2010-08-09 17:56:15

+0

,我想最好是寫一些批處理文檔,在VBScript中。但我仍然對這個問題很好奇。 – barlop 2010-08-09 18:28:54

回答

1

當WScript.Arguments(0)是不完整的路徑,a.bat需要在當前目錄中。

您可以檢查當前目錄:

WScript.Echo WScript.CreateObject("WScript.Shell").CurrentDirectory 

如果a.bat總是在同一文件夾中a.vbs,您可以使用完整的路徑:

set fso=WScript.CreateObject("Scripting.FileSystemObject") 
thepath=fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName),"a.bat") 
WScript.Echo thepath 
+0

嗯,我認爲你的一般觀點已經把問題弄清楚了。確保我在任何地方都使用絕對路徑。 wscript c:\ blah \ inv.vbs c:\ blah \ a.bat 以及絕對路徑的拷貝命令在bat內.. 很平凡..不過,我會嘗試進一步隔離事物並添加,如果我找到什麼。 – barlop 2010-08-09 23:53:22

+0

好吧,我似乎無法重現該問題..我不得不重新命名文件在一個點。我嘗試將它們改爲絕對路徑,現在它似乎可以工作..並且當我將這些路徑中的很多改回來時,它仍然可以工作.. wscript c:\ blah \ inv.vbs a.bat(如您所說,a。蝙蝠在相同的目錄 - 我有事實) 和a.bat不需要在文件副本中的絕對路徑。 我不知道到底發生了什麼問題。 爲什麼wscript與它不起作用,但沒有工作。但是,問題出在您所說的地區..我看到您提供的代碼如何幫助您查看發生了什麼。 – barlop 2010-08-10 07:13:41

+0

我發現當沒有指定vbs文件的路徑時,使用wscript做它,然後它會在路徑中找到任何vbs文件,而使用wscript它只會查找%userprofile%。但這不是行爲的原因,因爲vbs文件位於不在路徑中的目錄中。 – barlop 2010-08-10 07:15:12

0

爲什麼你使用一個VBScript只是爲了調用一個.bat? Start --> Run --> a.bat

如果你有這樣做的,做Start --> Run --> cscript a.vbs a.bat

+0

該方法在vbs文件內執行,在後臺運行bat或其他命令,而無需打開命令窗口。事實上,我的問題提到了這一點。 – barlop 2010-08-28 17:37:05