10

我有一个场景,在执行批处理文件期间,它导航到不同的文件夹(比如“../asdf”);并且在执行结束时,它将当前工作目录设置为用户调用 .bat 文件的同一文件夹。

但是如果用户在批处理完成之前终止了批处理,那么 cmd 会显示当前的工作目录(比如“../asdf”)。

但就我而言,我需要将工作目录恢复为默认/预定义的目录。可能吗?

  • 批处理文件是我写的,所以我可以修改它。
  • CMD 是通过我可以控制的 CMD 的桌面快捷方式打开的;因此可以在那里完成工作目录或将参数传递给 CMD 等属性。
4

1 回答 1

29

在您的批处理脚本中使用setlocal来封装您的批处理会话的运行环境。如果用户在您之前终止脚本cdpopd返回,您的脚本仍将退出它启动的目录中。这是一个简短的测试:

@echo off
setlocal
pushd c:\Users
cd
exit /b

输出:

C:\Users\me\Desktop>test.bat
c:\Users

C:\Users\me\Desktop>

请注意,我没有popdcd %userprofile%\Desktop,但脚本退出后我仍然回到我的桌面。

此外,setlocal防止您使用孤立的变量来破坏您的环境,这些变量在批处理脚本之外没有任何意义。这只是一个好习惯。在控制台上,键入help setlocal以获取更多信息。

于 2013-03-27T12:53:31.510 回答