2013-03-01 203 views
2

我已經編寫了以下批處理腳本,該腳本在目錄上運行另一批處理腳本,或者在目錄樹上添加一個標記,然後在等效目錄或目錄樹在不同的驅動器上(Z :)。無論選擇哪個選項,它都會輸出錯誤「系統找不到指定的路徑」。如果我只在一個目錄上執行操作,它確實執行了它應有的操作,即使它給出錯誤。它在目錄樹上無法成功運行。我已經運行它沒有@echo關閉嘗試瞭解它的失敗,沒有成功。它試圖改變的目錄確實存在。批處理腳本失敗,「系統找不到指定的路徑」

@echo off 
set origdir=%CD% 
if X%~f1==X (
echo Please input a directory. 
goto done 
) 

chdir /d %~f1 
for %%X in (myotherscript.bat) do (set FOUND=%%~$PATH:X) 
if not defined FOUND (
    echo myotherscript is not in your PATH 
    ) 
if X%2==X/R (
goto recursive 
) else (goto single) 

:recursive  
for /d /r %%G in (.) do call myotherscript 
echo Z:%~p1 
chdir /d "Z:%~p1" 
for /d /r %%G in (.) do call myotherscript 
goto ended 

:single 
call myotherscript 
echo Z:%~p1 
chdir /d "Z:%~p1" 
call myotherscript 
goto ended 

:ended 
chdir /d origdir 
goto done 

:done 
pause 

這裏是 「myotherscript」 是的,吹掃確實存在。

@echo off 
if exist "D:\path\to\purge.bat" (
    call purge 
    for %%f in (*.log.*) do call :renameit "%%f" 
    for %%f in (*.drw.*) do call :renameit "%%f" 
    for %%f in (*.asm.*) do call :renameit "%%f" 
    for %%f in (*.prt.*) do call :renameit "%%f" 
    goto done) else (
    echo Purge does not exist. 
    goto done) 

:renameit 
ren %1 *.1 

:done 

任何幫助,將不勝感激。 謝謝

+2

嘗試重新命名'@echo off',這應該可以幫助你找出導致什麼行「系統找不到指定的路徑」。 – rojo 2013-03-01 16:35:16

+0

爲什麼你認爲這個錯誤是在這個腳本中,而不是你的「myotherscript」? – dbenham 2013-03-01 18:59:22

+0

那麼,我已經獨立運行「myotherscript」,並沒有問題。所以除非兩者之間存在相互作用,否則我不會看到它會如何。我會將其添加到原始問題。 – ZackG 2013-03-01 20:35:42

回答

0

對我來說,我得到了「系統找不到指定的路徑」,由於在腳本中稍後出現的exe文件丟失。看來DOS中的管道並不總是按照執行順序輸出數據。我習慣於UNIX中腳本中每個「echo」命令的輸出順序執行,因此我在.bat文件中添加了調試輸出以嘗試告訴我哪些行已執行。

問題是,沒有找到文件的錯誤發生在輸出日誌(和屏幕)的方式早於回顯命令會指示。所以我不知道WinXP cmd shell是否會提前幾步執行,或者它是在調用bat文件的啓動過程中調用exe文件或進行解析。

事實證明,這實際上是我從一個call'd bat腳本運行的.exe的不好的路徑,但是echo調試語句讓我覺得我在腳本的早期部分。一旦我在exe之前添加了正確的路徑,它一切正常

相關問題