hum*_*man 10 shell cmd batch-file command-prompt windows-console
我有一个场景,在执行批处理文件期间,它导航到另一个文件夹(比如说"../asdf"); 并且在执行结束时,它将当前工作目录设置为用户调用.bat文件的同一文件夹.
但是如果用户在完成之前终止批处理,则cmd显示当前工作目录(例如"../asdf").
但就我而言,我需要将工作目录恢复为默认/预定义目录.可能吗?
roj*_*ojo 27
在批处理脚本中,用于setlocal
封装批处理会话的运行环境.如果用户终止脚本,你之前cd
或popd
返回,脚本仍然会在目录中退出,它开始.这是一个简短的测试:
@echo off
setlocal
pushd c:\Users
cd
exit /b
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Users\me\Desktop>test.bat
c:\Users
C:\Users\me\Desktop>
Run Code Online (Sandbox Code Playgroud)
请注意我没有popd
或者cd %userprofile%\Desktop
,但是在脚本退出后我仍然回到我的桌面.
此外,还setlocal
可以防止孤立变量在您的环境中使用,这些变量在批处理脚本之外没有任何意义.这只是一种很好的做法.在控制台,输入help setlocal
更多信息.