考虑以下批处理文件test.bat
:
CD C:\SOFTWARE
program.exe
此脚本运行自C:\ELSWHERE
C:\ELSWHERE> C:\test.bat
脚本退出后,现在是当前工作目录,C:\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 的限制内,是否可以做到这一点?
答案1
这甚至适用于 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%
它将当前目录存储到密码变量和当前驱动器进入驾驶多变的。
这可以用来恢复以前的目录。
在你的情况下
@echo off
call pwd.bat
CD C:\SOFTWARE
program.exe
%drive%
cd %pwd%