如何从其他目录中的另一个批处理文件中的一个批处理文件中启动exe文件?

人无名

我将尝试解释我的问题:

  • 我有一个名为master.bat的主批处理文件
  • 我有几个批处理文件,它们是使用CALL命令从master.bat调用的,名为slave_0x.bat。
  • 每个slave_0x.bat文件都会从相对目录中启动setup_0x.exe文件。
  • 这两个文件位于master.bat目录的子目录中。

例如:

  • master.bat文件位于D:\ Master \
  • slave_01.bat位于D:\ Master \ Slave_01 \
  • setup_01.exe也位于D:\ Master \ Slave_01 \

问题是 :

当我启动master.bat时,当前路径是“ D:\ Master \”。然后,当执行slave_01.bat时,它将尝试从“ D:\ Master \”而不是从“ D:\ Master”启动setup_01.exe。 \奴隶\”

REM Master.bat

@ECHO OFF
TITLE Installing Applications

SET mypath=%~dp0
ECHO %mypath:~0,-1%

ECHO.
ECHO 1) Installing App 1
ECHO.

call D:\Master\Slave_01\slave_01.bat"

ECHO.
ECHO 2) Installing App 2
ECHO.

CALL D:\Master\Slave_02\slave_02.bat"

PAUSE

slave_0x文件:

REM slave_01.bat

TITLE App 1

ECHO.
ECHO %mypath:~0,-1%
ECHO.

ECHO Installing App 1
ECHO Please wait...

START /wait setup_01.exe /SILENT /SP- /NORESTART

有没有一种方法可以使用slave_0x.bat文件中的当前目录,而不是slave_0x.bat中master.bat文件中的当前目录,从正确的目录中启动setup_0x.exe文件?

问候

瑞安·贝罗斯(Ryan Bemrose)

要启动其他目录中的可执行文件,请将相对路径添加到START命令中。使用%~dp0来获得当前正在运行的批处理文件的路径。

START /wait %~dp0\setup_01.exe /SILENT /SP- /NORESTART

这将启动可执行文件,但不会更改进程当前目录。

如果您的可执行文件依赖于当前目录,那么您将需要首先cd进入该目录。临时更改目录的最简单方法是pushdpopd

pushd %~dp0
START /wait setup_01.exe /SILENT /SP- /NORESTART
popd

注意:如果路径名或可执行文件名可以包含空格,则按如下所示将可执行文件名放在引号中(包括必需的虚拟引号)

START /wait "" "%~dp0\setup_01.exe" /SILENT /SP- /NORESTART

这是使用batchSTART命令的常见陷阱请参阅如何在Windows中使用带有路径的“开始”和带有空格的命令来创建批处理文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在另一个批处理文件中调用一个批处理文件?

如何从另一个批处理文件在批处理文件中写入管道(|)?

批处理-如何关闭从另一个批处理文件启动的批处理文件

从另一个批处理文件调用一个批处理,并从外部批处理中设置内部批处理文件参数

如何通过另一个批处理文件更新一个批处理文件中的值

批处理文件以递归方式从目录中读取文件名并输入到另一个命令

循环调用另一个批处理文件的批处理文件

调用另一个批处理文件的调用批处理文件失败

使批处理文件等待另一个批处理文件

Windows 批处理文件以提升的权限启动另一个批处理

如何在管道输出并保留当前工作目录的同时从另一个批处理文件启动批处理文件?

Windows批处理文件中的数字大于或小于另一个

获取另一个变量中的批处理文件变量的值

无法在另一个批处理文件中回显自删除命令

编写批处理文件:批处理将命令插入到另一个基于cmd的程序中

批处理文件:与另一个实例中的批处理脚本打开的Shell实例进行交互

如何使用Windows批处理文件从外部文件中搜索值并替换为另一个值

仅当从另一个批处理文件调用批处理文件时,如何才能处理该批处理文件?

在Windows批处理文件中,您可以链式执行不是另一个批处理文件的内容吗?

如何将一个操作的输出用作批处理文件中其他操作的输入?

如何在批处理文件中传递来自另一个 perl 脚本的输入

批处理文件-如何读取一个文件夹中的多个.txt文件?

从另一个批处理文件启动一个批处理文件只会打开CMD

如何使批处理文件移动另一个文件?

调用批处理文件,它使用第二个目录作为工作目录来调用另一个批处理文件

如何创建快捷方式以在一个文件夹中启动批处理文件?

创建一个扫描.txt文件的批处理文件(或其他文件?),然后将指定的文本复制到另一个.txt文件

如何使用一个主批处理文件运行多个批处理文件

如何创建一个批处理文件,该批处理文件创建一个批处理文件,该批处理文件创建一个批处理文件