在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