在Windows CMD批次, 我嘗試調用批處理文件:failture在CMD批處理文件
call ".\%%R\scenery\list bgl.bat" ".\%%R\scenery\"
在 「列表bgl.bat」 我有:
IF "%1"=="" (dir *.bgl /b > list_bgl.txt) ELSE (dir "%1*.bgl" /b > list_bgl.txt)
和崩潰某處在條件的地方。 if true部分工作正常(如果我直接運行批處理「list bgl.bat」)。但是如果我從一個批處理文件運行它,所以else塊失敗並且腳本崩潰。看看問題在哪裏?
更新:
T:\test\scenery>call ".\list bgl.bat"
T:\test\scenery>IF "" == "" (dir *.bgl /b 1>list_bgl.txt) ELSE (dir "*.bgl" /b 1>list_bgl.txt)
T:\test\scenery>ECHO DONE
DONE
T:\test\scenery>pause
Press any key to continue
T:\test\scenery>call ".\list bgl.bat" ".\"
T:\test\scenery>IF ".\" == ""
(dir *.bgl /b 1>list_bgl.txt) ELSE (dir ".\*.bgl" /b 1>list_bgl.txt)
T:\test\scenery>ECHO DONE
DONE
T:\test\scenery>pause
Press any key to continue
T:\test\scenery>
那麼這個工程。命令參數號。 1,從CMD-線測試
EDIT2: 當我調用主批(從父目錄)我認爲沒有錯誤,但未在指定的目錄,但在主目錄從其中主創建的文件運行進行:
:
@echo off
cls
for /F "tokens=*" %%R in ('dir * /A:D /b') do (
echo ".\%%R\scenery\list bgl.bat"
call ".\%%R\scenery\list bgl.bat" ".\%%R\scenery\"
)
pause
EDIT3: 是的,我有。問題就在這裏:
> list_bgl.txt
我想念那裏的路...這工作:
IF "%~1"=="" (dir *.bgl /b > list_bgl.txt) ELSE (dir "%~1*.bgl" /b > "%~1list_bgl.txt")
如果使用參數運行「list bgl.bat」會怎麼樣?比如:''list bgl.bat「」dummy parameter「' – vulkanino 2012-03-06 14:50:51
嗯,我試着更新我的文章。見上面 – user1141649 2012-03-06 16:45:43
您是否意識到''。\ %% R \ scenery \「路徑與'」%% R \ scenery \「'完全相同?點的意思是「當前目錄」所以「。\ Anydir」是當前目錄下面的Anydir ... – Aacini 2012-03-07 05:22:30