0

我正在编写一个批处理文件,它应该(除其他外)调用另一个批处理文件。第二个批处理文件取决于位于同一目录中的文件,因此,当我尝试从第一个批处理文件运行它时,它失败了。

例子:

批处理文件 #1: (位于 C:)

@echo  OFF
call C:\Tests\Tests.bat

输出:“找不到 C:\Tests\Tests.txt

原因:Tests.bat 和 Tests.txt 都位于:C:\Tests 下,而我从 C: 调用它。

有任何想法吗?

非常感谢,伊丹。

4

1 回答 1

1

您可以%-dp0在批处理文件中使用来获取当前正在执行的批处理文件的路径。每次需要从该目录访问文件时,都可以使用该路径。例如:

call "%~dp0\Tests.bat"
for /f "usebackq ..." ... in ("%~dp0\someFile") do ...

另一种选择是使用 PUSHD 将当前目录临时设置为批处理脚本顶部的相同路径。从那时起,您不必担心提供其他命令的路径。只要确保在脚本退出之前使用 POPD。这样脚本就不会影响任何可能调用它的脚本。

pushd "%~dp0"
rem Do you work
popd
于 2012-12-26T14:55:45.430 回答