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