基本上我有两个.bat脚本可以单独使用,但是我想将两个脚本合并为一个动作,因为我将它分配给一个热键并希望所有这一切只需按一个键,而不是两个但是我遇到了问题,因为脚本位于不同的目录中。
以下是我的两个脚本:
BLAH-Script.bat
RE4_UHD_BLAH_Tool.exe -p
DEL /F /S /Q /A "F:\r101\r101_09.AEV"
和第二个脚本:
UDAS_TOOL.bat :
DEL /F /S /Q /A "F:\st1\rl01.udas"
ping -n 1 localhost
DEL /F /S /Q /A "F:\UDAS Tool\r101.udas"
UDAS_Tool.exe -p
现在,这两个脚本都很好用,因为每个脚本都调用一个与调用它们的脚本位于同一个DIR的.exe,但是尝试将它们放到一个.bat文件中却没有用到CALL
函数,因为其中一个脚本存在于外部目录中。
我试图创建一个新的.bat脚本,它将在一个中执行两个bat脚本:
call "F:\pack\BLAH-Script.bat"
ping -n 1 localhost
call "F:\pack\UDAS\UDAS_TOOL.bat"
但是这不起作用。文件不是由exe工具按预期打包的。
为了尝试找出问题,我在脚本之间添加了pause
命令:
call "F:\pack\BLAH-Script.bat"
pause
call "F:\pack\UDAS_TOOL.bat"
这个命令允许我在窗口关闭之前读取输出并产生罪魁祸首。在第一个脚本中,我收到以下错误:
F:\ UD - r101 - > RE4_UHD_BLAH_Tool.exe -p ' RE4_UHD_BLAH_Tool.exe'不被视为内部或外部命令, 可操作程序或批处理文件。
我相信正在发生的事情是每个文件在其自己的目录中运行时工作正常,因为它们与它们正在调用的.exe位于相同的DIR中,但是第一个.bat文件将不会执行,因为第三个bat文件(那个叫第一个&秒的那个与第一个不在同一个DIR中。
我试过了:
CD /D "F:\pack"
call "F:\pack\BLAH-Script.bat"
pause
CD /D "F:\pack"
call "F:\pack\UDAS\UDAS_TOOL.bat"
有同样的错误。 如何整理目录?
答案 0 :(得分:1)
理论上,您可以简单地完全限定可执行路径,或确保可执行文件位于path
。
但是,某些程序假定可执行文件位于当前目录中,并期望配置文件等在该目录中类似,所以我要做的是
在每个批次中,在初始化仪式之后(@echo off / setlocal ...)添加一个
pushd "actualexcutablelocation"
并确保退出批次时
popd
执行以恢复到原始目录。
pushd
将当前目录切换到指定目录,直到执行popd
以返回原始目录。