在bat中调用不同文件夹下的bat问题,在每个bat中执行具体命令时,都应该加上"%~dp0"来明确相对于被执行的那个bat的目录。
比如在Desktop中新建一个icf.bat文件,一个startup文件夹(内含startup.bat文件),一个icf文件夹(内含in_icf.bat文件)。
三个文件的内容分别为:
rem icf.bat
@echo on
dir > icf.bat.logcall ./startup/startup.batrem -----------------------------------
rem startup.bat
@echo on
dir "%~dp0" > "%~dp0/startup.bat.log"call "%~dp0../icf/in_icf.bat"rem ------------------------------------
rem in_icf.bat
@echo on
dir "%~dp0" > "%~dp0/in_icf.bat.log" 执行icf.bat文件,应在Desktop、startup、icf文件夹中分别生成一个log文件,记录着各自目录中的dir结果。其他常用路径:
echo 当前盘符:%~d0
echo 当前盘符和路径:%~dp0echo 当前批处理全路径:%~f0echo 当前盘符和路径的短文件名格式:%~sdp0echo 当前CMD默认目录:%cd%