2017-04-14 97 views
0

基本上,我有两个单独工作的.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脚本,将在一个执行这两个蝙蝠脚本:

call "F:\pack\BLAH-Script.bat" 
ping -n 1 localhost 
call "F:\pack\UDAS\UDAS_TOOL.bat" 

然而,这并不work.The文件不受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”不被识别为内部或外部的命令, 可操作的程序或批处理文件。

我相信所发生的事情是,如果运行在自己的目录,因为它们是在同一个DIR因为它们调用的.exe每个文件工作正常,但第一个.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" 

与同样的错误。 如何获得整理好的目录?

+1

请告诉我们**发生了什么** - 脚本做了什么,它不应该做什么,它做了什么,它应该做什么。 “不起作用”是一种无用的信息 - 如果有的话,你不会寻求帮助。我怀疑第一个脚本正在改变当前目录,但没有看到脚本和明确的描述,这只是一个猜测。 – Magoo

+0

我认为你对目录的想法是正确的,因为两个脚本都在不同的地方,因此引用。至于“不工作”,我现在要详细说明我的问题。 –

+0

@Magoo好吧,我改进了问题以更好地反映问题。 –

回答

1

理论上,您可以完全限定可执行文件路径,或者确保可执行文件位于path上。

但是,有些程序假设该可执行文件是在当前目录下,并期望配置文件等也同样在该目录中,所以我会做的是

每批

,后初始化仪式(@echo off/setlocal ...)添加

pushd "actualexcutablelocation" 

,并确保从批量出口,

popd 

执行恢复到原来的目录。

pushd将当前目录切换到指定目录,直到执行popd以返回原始目录。

+0

这在第三个脚本中起作用。在每个命令之前添加'pushd“path_to_folder_that_contains_exe”来运行脚本。谢谢 –

+0

无法就“路径指定”问题提出建议 - 您的计算机似乎觉得您指定的目录不存在。请注意,引号不是必需的(我通过引用可能包含分隔符的目录/文件名的原则包含它们) - 这可以通过使用编辑器来重新引用“智能引号”来引起,在这种情况下,使用一个像'notepad ++'或'editplus'(等等)的合适edito。就我个人而言,我会在每个批处理文件中放入'pushd/popd'括号,以便每个批处理可以独立运行并且级联它们就是'call batch1&call batch2' – Magoo