根据批处理文件中的其他文件运行批处理文件

时间:2012-12-26 14:44:25

标签: batch-file

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

示例:

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

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

输出:“无法找到C:\ Tests \ Tests.txt

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

有什么想法吗?

非常感谢, IDAN。

1 个答案:

答案 0 :(得分:1)

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

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

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

pushd "%~dp0"
rem Do you work
popd