批处理文件未被识别为内部或外部命令

时间:2018-07-29 18:01:44

标签: batch-file

  1. 我有2台服务器,分别是 server1 server2
  2. server1 中,我有1个批处理脚本 A1.bat
  3. server2 中,我有2个批处理脚本 A2.bat A3.bat
  4. A1.bat文件正在调用A2.bat ,而 A2.bat文件正在调用A3.bat文件
  5. 当我从server2执行A2.bat文件时,它工作正常。它正在调用A3.bat文件。
  6. 但是,当我从server1执行A1.bat文件时,A2.bat文件已成功执行,但无法调用A3.bat文件。

在A1.bat中:

   @echo off
   Call \\server2\full_path\A2.bat

在A2.bat中:

   @echo off
   echo Hello
   Call A3.bat

在A3.bat中:

   @echo off
   echo World

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

在A2.bat中:

   @echo off
   echo Hello
   Call \\server2\full_path\A3.bat

是否有可能通过使用A1.bat从server1调用A2.bat来更改代码A1.bat(例如使用psexec或其他方法)以执行A3.bat。

请帮助!预先谢谢您:)!

1 个答案:

答案 0 :(得分:2)

当前的工作目录不支持

UNC路径,例如\\AB\full_path。因此,%CD%中未设置A2.bat,并且无法解析对A3.bat的相对引用。您必须修改A2.bat

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

call "%~dp0A3.bat"