Windows bat脚本不工作的调用命令
基本上,我有两个.bat脚本,它们各自工作得很好,但是我想将这两个脚本组合成一个动作,因为我将它们分配给一个热键,并希望所有这些都只需按一次键,而不是两次,但由于脚本位于不同的目录中,所以我遇到了问题 下面是我的两个脚本: 无聊的脚本.batWindows bat脚本不工作的调用命令,windows,batch-file,cmd,Windows,Batch File,Cmd,基本上,我有两个.bat脚本,它们各自工作得很好,但是我想将这两个脚本组合成一个动作,因为我将它们分配给一个热键,并希望所有这些都只需按一次键,而不是两次,但由于脚本位于不同的目录中,所以我遇到了问题 下面是我的两个脚本: 无聊的脚本.bat RE4_UHD_BLAH_Tool.exe -p DEL /F /S /Q /A "F:\r101\r101_09.AEV" 第二个脚本: UDAS_工具.bat: DEL /F /S /Q /A "F:\st1\rl01.udas" ping -n 1
RE4_UHD_BLAH_Tool.exe -p
DEL /F /S /Q /A "F:\r101\r101_09.AEV"
第二个脚本:
UDAS_工具.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
现在,这两种方法各自都非常有效,因为每个脚本都调用与调用它们的脚本位于同一目录中的.exe,但使用CALL
函数尝试将它们放入一个.bat文件却不起作用,因为其中一个脚本存在于外部目录中
我尝试创建一个新的.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位于同一目录中,但是第一个.bat文件不会执行,因为第三个bat文件(调用第一个和第二个文件的文件)与第一个文件不在同一目录中
我试过:
CD /D "F:\pack"
call "F:\pack\BLAH-Script.bat"
pause
CD /D "F:\pack"
call "F:\pack\UDAS\UDAS_TOOL.bat"
同样的错误。
如何整理目录?理论上,您只需完全限定可执行路径,或者确保可执行文件位于
路径上
然而,有些程序假定可执行文件在当前目录中,并且期望配置文件等也在该目录中,所以我要做的是
在每批中,在初始化仪式(@echo off/setlocal…)后添加一个
并确保从批次中退出时
popd
执行以还原到原始目录
pushd
将当前目录切换到指定目录,直到执行popd
返回原始目录。请告诉我们发生了什么-脚本做了哪些不应该做的事情,哪些没有做哪些应该做的事情。“不起作用”是一个无用的信息——如果有,你就不会寻求帮助。我怀疑第一个脚本正在更改当前目录,但没有看到脚本和清晰的描述,这只是猜测。我认为您关于目录的想法是正确的,因为两个脚本位于不同的位置,因此引用。至于“不起作用”,我现在将在我的问题中详细说明。@Magoo好的,我改进了这个问题以更好地反映这个问题。这在第三个脚本中起了作用。。在运行脚本的每个命令之前,将pushd“路径\u添加到包含\u exe的\u文件夹\u”
。感谢您无法就指定的路径问题提供建议-您的计算机似乎感觉到您指定的目录不存在。请注意,引号不是必需的(我根据引用目录/文件名的原则将它们包括在内,目录/文件名可能包含分隔符)-这可能是由于使用编辑器使用“智能引号”重新放置引号造成的,在这种情况下,请使用适当的编辑器,如notepad++
或editplus
(以及其他编辑器)。就我个人而言,我会将pushd/popd
括号放在每个批处理文件中,这样每个批处理都将独立运行&级联它们只是call batch1&call batch2
popd