近期回帖中遭遇一则怪相,在win8.1,win10系统可复现,用以下5段示例代码说明,唯独其中第5段代码中最后的 cd /d "c:\temp\" 失效,即脚本退出后当前目录仍是 "c:\temp\xxx"
以下测试代码存为 test.bat 可在命令行直接用 test.bat n 来测试各段代码运行之后当前目录的结果,其命令行参数 n=1-5
| @echo off &if "%~1"=="" (goto :5) else goto :%~1 | | | | :1 | | setlocal enabledelayedexpansion | | cd "c:\temp\xxx" | | echo,!cd! | | cd "c:\temp\" | | echo,改变当前目录有效》!cd! | | endlocal | | exit/b | | | | :2 | | setlocal enabledelayedexpansion | | cd "c:\temp\xxx" | | echo,!cd! | | cd "c:\temp\" | | echo,改变当前目录有效》!cd! | | endlocal | | exit/b | | | | :3 | | setlocal enabledelayedexpansion | | cd "c:\temp\xxx" | | echo,!cd! | | endlocal | | cd "c:\temp\" | | echo,改变当前目录有效》%cd% | | exit/b | | | | :4 | | cd "c:\temp\xxx" | | setlocal enabledelayedexpansion | | echo,!cd! | | endlocal | | cd "c:\temp\" | | echo,改变当前目录有效》%cd% | | exit/b | | | | :5 | | cd /d "c:\temp\xxx" | | setlocal enabledelayedexpansion | | echo,!cd! | | cd /d "c:\temp\" | | echo,!cd!》当前显示有效》脚本退出后无效 | | endlocal | | exit/bCOPY |
|