一进“dos”就自动进入上次的目录
这个原来在别的地方发过,但是后来发现有bug,处理windows下带有空格的长文件夹会出错。因为原来那个帖子已经不能编辑了,所以修改后写在这里。
这里的“dos”,就是windows下的命令行窗口,所以加上引号。缺省是一打开就自动进入C:\Users\foo的目录,但是我常用的目录往往是别的。所以想,最好每次打开时都自动进入上次退出时所在的目录。
这个程序的另外一个功能就是实现键入cd - 时,进入上次的目录。(实际上我是先在网上找到这个cd - 的代码,在此基础上修改的。)
花了不少时间做这个程序,主要是dos批处理的功力太浅,不过dos批处理感觉也确实太坑爹。这个需求似乎是用dos批处理来做最合适,所以不得不硬着头皮做了出来,以后dos批处理能不碰就不碰。
程序包括3个文件。一个是注册表文件autorun.reg,内容是:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Command Processor] "AutoRun"="C:\\code\\autoCmd\\autocmd.cmd"
一个是命令文件autocmd.cmd,代码是:
@echo off if exist C:\code\autoCmd\oldFolder.txt ( for /f "delims=" %%i in (C:\code\autoCmd\oldFolder.txt) do ( set OLDPWD=%%i goto BREAK1 ) :BREAK1 if exist "%OLDPWD%" ( cd /d "%OLDPWD%" set OLDPWD="%CD%" ) ) doskey cd=C:\code\autoCmd\cd2 $*
最后一个是dos批处理文件cd2.bat,代码是:
@echo off if "%*"=="" cd & exit /b if "%*"=="-" ( cd /d "%OLDPWD%" echo %OLDPWD% >C:\code\autoCmd\oldFolder.txt set OLDPWD="%cd%" ) else ( cd /d %* if not errorlevel 1 ( set OLDPWD="%cd%" for %%I in (.) do ( echo %%~fxI>C:\code\autoCmd\oldFolder.txt ) doskey /history >C:\code\autoCmd\oldCmd.txt ) )
其中最后一句doskey /history >C:\code\autoCmd\oldCmd.txt不是必须的,这里只是为了保存历史,以便以后分析整理。
使用时,先插入windows注册表,然后将所有文件放在一个目录下(如上面的c:\code\autoCmd),就可以了。oldFolder.txt保存退出命令行窗口时所在的目录,供下次打开时使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律