2013-04-16 21 views
1

運行lookatbat.bat時,收到一個錯誤,表示沒有找到文件(file1WithSpaces.txt)。我曾嘗試在此論壇中使用此修復程序,但即使使用此代碼,我也收到相同的錯誤。使用相對路徑通過vbs腳本參數從bat到bat發送參數

這是一塊lookatbat.bat,它使用相對路徑調用VBScript。

cscript process.vbs /x:"Temp\file1WithSpaces.txt" /y:"Temp\file2WithSpaces.txt" 

process.vbs作出其使用的process.vbs第一一個參數的bat文件(InprocessVbs.bat)的呼叫。

process.vbs有許多指令,這裏是它的一個有用的部分:

dim param1: param1=Wscript.Arguments.Named("x") 
dim param2: param2=Wscript.Arguments.Named("y") 
msgbox param1 
shell.run "InprocessVbs.bat """ & param1 & """ ""file.txt""" 

msgbox param1彈出窗口TEMP \ file1WithSpaces.txt,但我認爲param1不正確檢索到InprocessVbs.bat

感謝您的幫助!

InprocessVbs.bat

echo %2 
echo %3 
echo %4 
Set arg1=%1 
echo %arg1% 
cscript anomyze.vbs %1>spec%1 
more +2 %1|findstr /n /I /r /b /C:""^R.*=001>result.out 
+0

是什麼讓你「認爲參數1不能正確檢索到InprocessVbs.bat」? –

回答

0

的路徑被認爲是相對於當前的工作目錄,因此檢查工作目錄是什麼(在兩個VBScript和批處理從它調用的腳本),並驗證給定的相對路徑是否存在於該工作目錄下。在VBScript

檢查工作目錄:

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

檢查工作目錄批次:

echo %CD% 

編輯:它通常是更好地從參數中刪除雙引號並將它們添加在腳本中根據需要。試試這個:

cscript anomyze.vbs "%~f1">"spec%~1" 

如果文件像這樣的東西存在,你可以驗證:

if exist "%~f1" (
    cscript anomyze.vbs "%~f1">"spec%~1" 
) else (
    echo "%~f1" doesn't exist! 
) 

同時檢查周圍的findstr正則表達式的雙引號。在您的評論的部分看起來像這樣:

/C:""^R.*=001 

當它應該是這樣的:

/C:"^R.*=001" 
+0

我檢查了批處理和vbs代碼。當前的工作目錄是正確的。我的'Temp'文件夾確實存在於這個文件夾下。 – new

+0

然後,您需要顯示「InprocessVbs.bat」的內容並解釋是什麼讓您「認爲param1無法正確檢索到InprocessVbs.bat」。 –

+0

我認爲param1會導致錯誤,因爲如果文件進入當前工作目錄而不是「Temp」文件夾,則不會出現問題,並且腳本可以成功運行(編寫cscript process.vbs /x:"file1WithSpaces.txt「/ y:」file2WithSpaces .txt「)while cscript process.vbs /x:"Temp\file1WithSpaces.txt」/y:"Temp\file2WithSpaces.txt「導致錯誤 – new

0

試試下面的代碼

strCMD = "InprocessVbs.bat "&chr(34) & param1 & chr(34)&" file.txt" 
shell.run strCMD 
+0

謝謝,我試過並收到文件未找到錯誤超過運行 – new