child.bat 不是内部或外部命令,也不是可运行的程序或批处理文件

child.bat not recognized as an internal or external command, operable program or batch file

我一直在处理 bat 文件问题。

我在主 bat 文件中调用一个 bat 文件。这两个 bat 文件在同一个文件夹中,即 "D:\"

Test.bat:

SET str=HELLO
ECHO say %str% Test
Call Child.bat

Child.bat:

ECHO say %str% child 

Test.bat 文件中我声明了一个变量 str 并且也在子 bat 文件中使用它。当我直接双击 运行ning Test.bat 时,它按预期工作,我将得到结果

say HELLO Test
say HELLO Child

但问题就在这里,如果我 运行 在命令提示符下从另一台机器 Test.bat 文件

它只执行 Test.bat 并且无法调用 Child.bat 因为我得到像

这样的输出
say HELLO Test
Child.bat not recognized as an internal or external command, operable program or batch file

在命令提示符的上方,我可以看到一条语句,如

'\Server\D$\' CMD.EXE was started with the above path as the current directory. UNC paths are not supported.  Defaulting to Windows directory.

实际上我需要设置一个 sql 作业来调用 Test.bat 文件。

我该如何解决这个问题?

test.bat

pushd "%~dp0"
SET str=HELLO
ECHO say %str% Test
Call Child.bat
popd

只需创建一个临时映射并将当前文件夹更改为它即可。最后释放它。 pushd /popd 会处理的。

但是虽然它会起作用,但如果调用批处理文件时当前活动目录是 UNC 路径(从 windows run 对话框调用它时会发生什么),UNC 错误将被显示。如果您想避免它,请确保该进程使用不同的默认目录启动。