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
Batch file 批处理文件未被识别为内部或外部命令 我有两台服务器,server1和server2 在服务器1中,我有一个批处理脚本,A1.bat 在server2中,我有两个批处理脚本,A2.bat和A3.bat A1.bat文件调用A2.bat,A2.bat调用A3.bat文件 当我从server2执行A2.bat文件时,它工作正常。它正在调用A3.bat文件 但当我从server1执行A1.bat文件时,A2.bat文件成功执行,但调用A3.bat文件失败_Batch File - Fatal编程技术网

Batch file 批处理文件未被识别为内部或外部命令 我有两台服务器,server1和server2 在服务器1中,我有一个批处理脚本,A1.bat 在server2中,我有两个批处理脚本,A2.bat和A3.bat A1.bat文件调用A2.bat,A2.bat调用A3.bat文件 当我从server2执行A2.bat文件时,它工作正常。它正在调用A3.bat文件 但当我从server1执行A1.bat文件时,A2.bat文件成功执行,但调用A3.bat文件失败

Batch file 批处理文件未被识别为内部或外部命令 我有两台服务器,server1和server2 在服务器1中,我有一个批处理脚本,A1.bat 在server2中,我有两个批处理脚本,A2.bat和A3.bat A1.bat文件调用A2.bat,A2.bat调用A3.bat文件 当我从server2执行A2.bat文件时,它工作正常。它正在调用A3.bat文件 但当我从server1执行A1.bat文件时,A2.bat文件成功执行,但调用A3.bat文件失败,batch-file,Batch File,在A1.bat中: 在A2.bat中: 在A3.bat中: 我不想更改A2.bat中的代码。如果我在A2.bat中给出完整路径来调用A3.bat,那么它工作正常 在A2.bat中: 是否有可能通过使用A1.bat从服务器1调用A2.bat来更改代码A1.bat(如使用psexec或任何东西)以执行A3.bat 请帮忙!提前谢谢你:) 当前工作目录不支持UNC路径,例如\\AB\full\u path。因此,%CD%未在A2.bat中设置,无法解析对A3.bat的相对引用。您必须修改A2.bat

在A1.bat中:

在A2.bat中:

在A3.bat中:

我不想更改A2.bat中的代码。如果我在A2.bat中给出完整路径来调用A3.bat,那么它工作正常

在A2.bat中:

是否有可能通过使用A1.bat从服务器1调用A2.bat来更改代码A1.bat(如使用psexec或任何东西)以执行A3.bat


请帮忙!提前谢谢你:)

当前工作目录不支持UNC路径,例如
\\AB\full\u path
。因此,
%CD%
未在
A2.bat
中设置,无法解析对
A3.bat
的相对引用。您必须修改
A2.bat

有多种方法可以做到这一点;最好是模拟相对参考:

call "%~dp0A3.bat"

我建议您编辑您的问题,并通过类似Server1和Server2的方式而不是AB和CD来引用服务器。正如您所知,
CD
也是一个CMD命令,在回答或评论您的问题时,它们可能会相互混淆。此外,您提供的信息不一致:如果A1.bat和A2.bat位于“CD服务器”中,那么您如何通过
\\AB\full\u path\A2.bat
\\AB\full\u path\A3.bat
成功调用它们。而
psexec
用于远程执行目标服务器(CD服务器)上的脚本,它不同于在“CD服务器”上调用远程文件并在“AB服务器”上本地运行它。所以你应该先弄清楚你的意图,我已经有了A2.bat和A3.bat。我使用这个文件很长时间了,而且只在server2上运行。现在需要从另一台服务器(server2)使用相同的批处理文件(A2.bat,内部调用A3.bat)。因此,我需要在server2(A1.bat)中创建一个新的批处理文件,该文件可以调用A2.bat。当使用UNC路径执行批处理文件时,工作目录将变为
C:\Windows
。它字面上告诉你当你执行批处理文件时。所以基本上你有一个非工作代码,你不想改变,但你想让它工作。。。对我来说,听起来很不可能……默认情况下,UNC默认路径被关闭,因为它们用于使旧程序崩溃。[11]HKEY_CURRENT_USER\Software\Microsoft\Command Processor[11]上的Dword注册表值DisableUNCCheck允许默认目录为UNC。CD命令将拒绝更改,但将UNC路径放置在Cmd快捷方式的默认目录中或使用Start命令。开始“/d\\127.0.0.1\C$”cmd/k”(C$共享是为管理员准备的)@在CatCat中,OP没有尝试直接调用远程批处理文件。但是他正在从本地调用的批处理文件调用远程批处理文件。因此,初始当前目录在这里不是问题。
   @echo off
   echo Hello
   Call A3.bat
   @echo off
   echo World
   @echo off
   echo Hello
   Call \\server2\full_path\A3.bat
call "%~dp0A3.bat"