Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows bat脚本不工作的调用命令_Windows_Batch File_Cmd - Fatal编程技术网

Windows bat脚本不工作的调用命令

Windows 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

基本上,我有两个.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 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