从 Windows 个批处理文件调用 SUBST
Calling SUBST from Windows batch file
我在从 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
之前,驱动器映射就可以了。直接调用之后,驱动映射确实已经去掉了。但是为什么我会收到错误消息?
该行为的原因是批处理脚本的执行方式。它读取一行,执行它并读取下一行来执行,直到没有更多的行。
卸载驱动器时,会破坏脚本的(虚拟)路径,因此 "reading the next line" 失败 - 脚本为 "gone"。即使卸载是脚本的最后一行,解释器在尝试读取下一行之前也不知道 - 但失败了,因为脚本不再可用。
所以您的错误消息不是来自脚本中的任何内容,而是来自解释器本身,试图读取脚本的下一行。
如果在命令提示符下输入命令,没有"next line"预期的结果,所以不会出现错误。
编辑
避免错误信息:
subst x: /d & goto :eof
该行被一次性读取和解析,并且由于 this 行明确退出批处理,解释器不会尝试读取 next行。
我在从 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
之前,驱动器映射就可以了。直接调用之后,驱动映射确实已经去掉了。但是为什么我会收到错误消息?
该行为的原因是批处理脚本的执行方式。它读取一行,执行它并读取下一行来执行,直到没有更多的行。
卸载驱动器时,会破坏脚本的(虚拟)路径,因此 "reading the next line" 失败 - 脚本为 "gone"。即使卸载是脚本的最后一行,解释器在尝试读取下一行之前也不知道 - 但失败了,因为脚本不再可用。
所以您的错误消息不是来自脚本中的任何内容,而是来自解释器本身,试图读取脚本的下一行。
如果在命令提示符下输入命令,没有"next line"预期的结果,所以不会出现错误。
编辑
避免错误信息:
subst x: /d & goto :eof
该行被一次性读取和解析,并且由于 this 行明确退出批处理,解释器不会尝试读取 next行。