我有一个场景,在执行批处理文件期间,它导航到不同的文件夹(比如“../asdf”);并且在执行结束时,它将当前工作目录设置为用户调用 .bat 文件的同一文件夹。
但是如果用户在批处理完成之前终止了批处理,那么 cmd 会显示当前的工作目录(比如“../asdf”)。
但就我而言,我需要将工作目录恢复为默认/预定义的目录。可能吗?
- 批处理文件是我写的,所以我可以修改它。
- CMD 是通过我可以控制的 CMD 的桌面快捷方式打开的;因此可以在那里完成工作目录或将参数传递给 CMD 等属性。
我有一个场景,在执行批处理文件期间,它导航到不同的文件夹(比如“../asdf”);并且在执行结束时,它将当前工作目录设置为用户调用 .bat 文件的同一文件夹。
但是如果用户在批处理完成之前终止了批处理,那么 cmd 会显示当前的工作目录(比如“../asdf”)。
但就我而言,我需要将工作目录恢复为默认/预定义的目录。可能吗?
在您的批处理脚本中使用setlocal
来封装您的批处理会话的运行环境。如果用户在您之前终止脚本cd
或popd
返回,您的脚本仍将退出它启动的目录中。这是一个简短的测试:
@echo off
setlocal
pushd c:\Users
cd
exit /b
输出:
C:\Users\me\Desktop>test.bat
c:\Users
C:\Users\me\Desktop>
请注意,我没有popd
或cd %userprofile%\Desktop
,但脚本退出后我仍然回到我的桌面。
此外,setlocal
防止您使用孤立的变量来破坏您的环境,这些变量在批处理脚本之外没有任何意义。这只是一个好习惯。在控制台上,键入help setlocal
以获取更多信息。