Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 根据批处理文件中的其他文件运行批处理文件_Batch File - Fatal编程技术网

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

Batch file 根据批处理文件中的其他文件运行批处理文件,batch-file,Batch File,我正在编写一个批处理文件,它应该(除其他外)调用另一个批处理文件。 第二个批处理文件取决于位于同一目录中的文件,因此,当我尝试从第一个批处理文件运行它时,它失败了 例如: 批处理文件#1:(位于C:) 输出:“找不到C:\Tests\Tests.txt 原因:当我从C:调用Tests.bat和Tests.txt时,它们都位于:C:\Tests下 有什么想法吗 非常感谢, Idan。您可以在批处理文件中使用%-dp0来获取当前正在执行的批处理文件的路径。您可以在每次需要从该目录访问文件时使用该路径

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

例如:

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

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

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

有什么想法吗

非常感谢,
Idan。

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

call "%~dp0\Tests.bat"
for /f "usebackq ..." ... in ("%~dp0\someFile") do ...
另一个选项是使用PUSHD将当前目录临时设置为批处理脚本顶部的同一路径。从那时起,您不必担心为其他命令提供路径。只需确保在脚本退出之前使用POPD。这样,脚本将不会影响任何可能调用它的脚本

pushd "%~dp0"
rem Do you work
popd

谢谢!有没有一种不改变目录的方法?(我这样问是因为我可能需要调用位于不同位置的不同批处理文件)@Idanis-这就是我在回答的第一部分中试图解决的问题。引用文件的每一行代码都可以包括
%~dp0
路径中的路径(视情况而定)。我还更新了关于PUSHD的回答
pushd "%~dp0"
rem Do you work
popd