Win10下如何让批处理快捷方式在选中/当前文件夹启动
解决方法:让批处理通过快捷键在当前资源管理器目录启动
要实现快捷键启动批处理时,自动以当前打开的资源管理器文件夹或选中的文件夹作为工作目录,你可以用以下两种方案:
方案一:修改批处理文件,动态获取资源管理器路径
直接在你的.bat文件开头添加代码,自动获取当前活动资源管理器窗口的路径并切换过去,之后再执行你的复制逻辑。
修改后的批处理示例:
@echo off :: 获取当前活动资源管理器的路径 for /f "tokens=2 delims=," %%a in ('tasklist /v /fi "imagename eq explorer.exe" /fo csv ^| findstr /i "C:\"') do ( set "explorer_path=%%~a" goto :switch_dir ) :switch_dir :: 切换到获取到的路径 cd /d "%explorer_path%" :: 这里替换成你的复制命令,示例是复制当前目录下的txt文件到桌面的目标文件夹 copy *.txt "%USERPROFILE%\Desktop\目标文件夹\"
说明
- 这段代码会遍历资源管理器进程,提取其当前打开的路径,然后切换到该路径执行后续命令。
- 不管快捷方式的「起始位置」是什么,批处理都会自动切换到目标目录。
方案二:用VBScript作为中间层(更精准)
如果需要更精准地获取当前选中的文件夹或活动资源管理器窗口路径,可以用VBScript先获取路径,再启动批处理。
- 创建一个
LaunchBat.vbs文件,内容如下:
Set objShell = CreateObject("Shell.Application") Set objWindows = objShell.Windows() ' 遍历所有资源管理器窗口,找到当前活动的那个 For Each objWindow In objWindows If InStr(objWindow.FullName, "explorer.exe") > 0 Then currentPath = objWindow.Document.Folder.Self.Path Exit For End If Next ' 启动批处理,指定工作目录为获取到的路径 Set objWshShell = CreateObject("WScript.Shell") objWshShell.CurrentDirectory = currentPath ' 替换成你的批处理实际路径,有空格要加双引号 objWshShell.Run """D:\Tools\你的脚本.bat""", 1, False
- 给这个
LaunchBat.vbs创建快捷方式,设置快捷键Ctrl+Shift+Z,快捷方式的「起始位置」可以留空。
说明
- 这个VBS会精准定位当前活动的资源管理器窗口路径,然后启动批处理时强制指定工作目录,确保批处理在目标路径下执行。
内容的提问来源于stack exchange,提问作者Yan
相关产品推荐
相关产品推荐

