Zhr*_*hro 5 command-line windows-95 ms-dos windows-98 batch-file
考虑以下批处理文件test.bat:
CD C:\SOFTWARE
program.exe
Run Code Online (Sandbox Code Playgroud)
该脚本运行自C:\ELSWHERE
C:\ELSWHERE> C:\test.bat
Run Code Online (Sandbox Code Playgroud)
脚本退出后,当前工作目录是 nowC:\SOFTWARE而不是以前的工作目录C:\ELSWHERE。
该脚本将工作目录更改为,C:\SOFTWARE因为program.exe需要config.ini位于当前C:\SOFTWARE工作目录并使用当前工作目录来定位它。如果软件program.exe直接运行,C:\或者C:\ELSWHERE使用其绝对路径名,程序将无法读取其配置并抛出错误。解决方案是首先CD进入该C:\SOFTWARE文件夹并从那里运行程序。
在批处理文件中执行此操作的问题是,这也会更改先前环境的工作目录,无论是主机 COMMAND.COM 工作目录还是另一个批处理文件。
对于基于 NT 的命令提示符来说,这不是问题,它可以访问pushd和popd以及其他有用的环境变量来保留旧的工作目录。但在旧的 MS-DOS\Win9x command.com 的限制下是否可以做到这一点?
这甚至适用于 MSDOS6.22
密码蝙蝠
@echo off
@echo @prompt @set drive=$N:$_ @set pwd=$P> temp.bat
%comspec% /c temp.bat > temp2.bat
call temp2.bat
del temp.bat
del temp2.bat
echo %PWD%
Run Code Online (Sandbox Code Playgroud)
它将当前目录存储到pwd变量中,将当前驱动器存储到drive变量中。
这可用于恢复以前的目录。
在你的情况下
@echo off
call pwd.bat
CD C:\SOFTWARE
program.exe
%drive%
cd %pwd%
Run Code Online (Sandbox Code Playgroud)