我正在编写一个批处理文件,该文件应该(除其他外)调用另一个批处理文件。 第二个批处理文件取决于位于同一目录中的文件,因此,当我尝试从第一个批处理文件运行它时,它会失败。
示例:
批处理文件#1 :(位于C:)
@echo OFF
call C:\Tests\Tests.bat
输出:“无法找到C:\ Tests \ Tests.txt
原因:Tests.bat和Tests.txt都位于:C:\ Tests,当我从C:中调用它时。
有什么想法吗?
非常感谢, IDAN。
答案 0 :(得分:1)
您可以在批处理文件中使用%-dp0
来获取当前正在执行的批处理文件的路径。每次需要从该目录访问文件时,都可以使用该路径。例如:
call "%~dp0\Tests.bat"
for /f "usebackq ..." ... in ("%~dp0\someFile") do ...
另一种选择是使用PUSHD临时将当前目录设置为批处理脚本顶部的相同路径。从那时起,您不必担心提供其他命令的路径。只需确保在脚本退出之前使用POPD。这样,脚本不会影响任何可能调用它的脚本。
pushd "%~dp0"
rem Do you work
popd