我在从Windows批处理文件调用SUBST时遇到了问题。我希望使用一个批处理创建一个虚拟驱动器映射,使用第二个批处理卸载该驱动器。但是,卸载会产生错误消息:
The system cannot find the path specified.这是我的批处理文件:
prepare.bat
pushd .
subst X: .
X:cleanup.bat
popd
subst X: /D执行提供下列产出:
d:\>prepare.bat
d:\>pushd .
d:\>subst X: .
d:\>X:
X:\>cleanup.bat
X:\>popd
d:\>subst X: /D
Das System kann den angegebenen Pfad nicht finden.
d:\>有人能向我解释一下这里出了什么问题以及如何解决吗?
编辑:
有些奇怪的事情需要注意:
subst X: /D之前,驱动器映射是很好的。在调用它之后,驱动器映射确实被删除了。但是为什么我会出错呢?发布于 2019-05-15 12:50:51
这种行为的原因是执行批处理脚本的方式。它读取一行,执行它并读取要执行的下一行,直到没有更多行为止。
当您卸载驱动器时,您破坏到脚本的(虚拟)路径,因此“读取下一行”失败--脚本“消失”。即使卸载是脚本的最后一行,解释器直到尝试读取下一行时才知道--并且失败了,因为脚本已经不可用了。
因此,错误消息不是来自脚本内部的任何内容,而是来自解释器本身,试图读取脚本的下一行。
如果在命令提示符下输入命令,则不需要“下一行”,因此不会发生错误。
编辑
为了避免错误消息:
subst x: /d & goto :eof行是一次读取和解析的,当这一行明确地退出批处理时,解释器不会尝试读取下一行。
https://stackoverflow.com/questions/56149003
复制相似问题