命令行在正确目录中的批处理文件中调用批处理文件

时间:2016-03-04 14:58:13

标签: windows batch-file cmd

我在c:\test.bat中有一个批处理文件。此批处理文件中的命令是:

C:
CALL test.bat

在我的test.bat里面,我有:

\Tables\batch.bat

命令行调用test.bat就好了,但是当它到达命令\Tables\batch.bat时它会说:

  

系统找不到指定的路径。

如果我将test.bat更改为以下内容,则可以正常运行:

CD Tables
CALL batch.bat

但由于其他原因,我无法更改test.dat。有没有办法调用test.bat并确保我的目录是Tables目录? Test.dat有多个命令,因此\Sprocs\test2.bat

还有另一个命令

1 个答案:

答案 0 :(得分:0)

\Tables\batch.bat表示文件batch.bat位于当前驱动器根目录的子目录Tables中。

.\Tables\batch.bat或仅Tables\batch.bat表示文件batch.bat位于当前目录的子目录Tables中。

..\Tables\batch.bat表示文件batch.bat位于当前目录的父目录的子目录Tables中。换句话说,Tables是与当前目录并行的目录。

因此,请遵循Liturgist的建议并删除第一个\以引用当前目录中子目录batch.bat中的文件Tables

顺便说一下:

C:将当前驱动器切换为驱动器C:。但是这并没有定义哪个目录是驱动器C:上的当前目录。使用以下命令将特定目录设置为驱动器C:上的当前目录,与当前驱动器和当前目录无关。

cd /D "C:\Path\To\Directory"

如果批处理文件也在运行,并且包含批处理文件的目录应该成为当前目录使用:

cd /D "%~dp0"

pushd "%~dp0"

有关这两个命令的详细信息,请打开命令提示符窗口并在窗口cd /?pushd /?内运行,以获取显示的这两个命令的帮助。 call /?解释了%~dp0(参数0的驱动器和路径 - 批处理文件)。