如何运行包含 CD 的 MS-DOS/Win9x 批处理文件同时保留原始工作目录?

如何运行包含 CD 的 MS-DOS/Win9x 批处理文件同时保留原始工作目录?

考虑以下批处理文件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 的命令提示符来说,这不是问题,因为它可以访问pushdpopd,以及其他有用的环境变量来保留旧的工作目录。但是,在旧的 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%

相关内容