我从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
之前,驱动器映射很好。调用后直接将驱动器映射确实删除了。但是为什么我会出错? 最佳答案
该行为的原因是批处理脚本的执行方式。它读取一行,执行该行,然后读取下一行以执行,直到没有更多行为止。
卸载驱动器时,销毁了脚本的(虚拟)路径,因此“读取下一行”失败-脚本已“消失”。即使卸载是脚本的最后一行,解释器也要等到尝试读取下一行时才知道-并失败,因为该脚本不再可用。
因此,您的错误消息不是来自脚本内部的任何内容,而是来自解释器本身,试图读取脚本的下一行。
如果在命令提示符下输入命令,则不会出现“下一行”,因此不会发生任何错误。
编辑
为了避免错误消息:
subst x: /d & goto :eof
一次性读取并分析该行,并且由于该行显式退出批处理,因此解释器不会尝试读取下一行。
关于windows - 从Windows批处理文件调用SUBST,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56149003/