2010-10-03 64 views
1

例如1如何讓我的批處理腳本在遞歸目錄中使用命令?

@echo off 
for %%a in (precomp.exe) do set pc=%%~fa 
for /r %%a in (*.pcf) do ( 
    pushd %%~dpa 
    echo [%pc% -r %%~nxa] 
    %pc% -r %%~nxa 
    popd 
) 

當我運行蝙蝠我得到precomp.exe是一個未知的命令我有預補償 與腳本的文件夾中。但是,如果我複製precompt到包含的.pcf文件

嘗試使用2個腳本

script1 

for /r %%i in (*.pcf) do call sr2 "%%~pi" "%%i" 
script 2 
pushd %1     
precomp -r %2  
popd   

兩個腳本工作,但只有當我複製到預補償不同的對待每一子目錄和每個文件夾的用戶才能使用永遠文件夾和所有子文件夾。請幫助,因爲我知道一定有離開使腳本使用預補償的文件夾中的腳本

回答

0

您可以臨時修改PATH環境變量包括precomp路徑:

如:

setlocal 
set PATH=%PATH%;%~dp0 
for /r %%i in (*.pcf) do (
    pushd "%%~pi" 
    precomp -r %%i 
    popd 
) 

,或者使用直接的precomp路徑:

for /r %%i in (*.pcf) do %~dp0\precomp -r %%i 
+0

幾乎工作的第一個解決方案,但可惜它不:(好像預補償依靠DLL在與腳本和precomp.But相同的文件夾中時,我運行腳本IM獲取無法確定文件size.Ill繼續嘗試雖然:)感謝您的幫助,雖然。更近一步 – kam 2010-10-03 10:43:19

+0

Hm,應從exe所在的同一目錄(以及PATH)拾取DLL,而不是當前工作目錄。當前的工作目錄也很重要?因爲第二種方法不會改變它,因此應該按原樣工作。 – Joey 2010-10-03 11:10:57

+0

我無法將工作目錄設置爲絕對路徑,因爲這將根據最終用戶的安裝偏好進行更改,因爲您的第二個解決方案無法擺動,但是當我運行它時,該蝙蝠剛剛退出。感謝您的幫助joey – kam 2010-10-03 11:20:20

相關問題