如何通过命令行获取VS Code当前窗口已打开的所有文件夹列表
VS Code 官方提供的code命令行工具确实没有内置查询当前已打开文件夹列表的功能,你从code --help中查询到的两个相关参数仅用于控制文件夹打开逻辑,不支持查询操作,翻译如下:
-a --add <folder> 将指定文件夹添加到最近活跃的窗口 -r --reuse-window 强制在已打开的窗口中打开文件或文件夹
解决方案
方案1:通过进程启动参数获取当前打开的文件夹
直接读取VS Code进程的启动命令行参数,提取传入的文件夹路径,适用于所有平台:
Windows(PowerShell执行)
Get-CimInstance -ClassName Win32_Process -Filter "Name = 'Code.exe'" | Where-Object { $_.CommandLine -match '--folder-uri' } | ForEach-Object { $_.CommandLine | Select-String -Pattern '--folder-uri file:///([^ ]+)' -AllMatches | ForEach-Object { $_.Matches.Groups[1].Value -replace '/', '\' } } | Sort-Object -Unique
macOS(终端执行)
ps aux | grep 'Code.app' | grep -- '--folder-uri' | sed -e 's/.*--folder-uri file:\/\/\///' -e 's/ .*//' -e 's/%20/ /g' | uniq
Linux(终端执行)
ps aux | grep code | grep -- '--folder-uri' | sed -e 's/.*--folder-uri file:\/\/\///' -e 's/ .*//' -e 's/%20/ /g' | uniq
注意:如果使用VS Code预览版(Insider),需要把命令中的进程名替换为
Code - Insiders.exe(Windows)、Code - Insiders.app(macOS)、code-insiders(Linux)。
方案2:通过工作区存储文件获取(覆盖所有历史+当前打开的文件夹)
VS Code会把所有打开过的工作区信息存在本地配置目录下,读取该目录下的workspace.json文件即可拿到完整的文件夹路径,精准度更高,支持获取运行中手动添加到工作区的文件夹:
各系统存储路径:
- Windows:
%APPDATA%\Code\User\workspaceStorage\ - macOS:
~/Library/Application Support/Code/User/workspaceStorage/ - Linux:
~/.config/Code/User/workspaceStorage/
以Linux为例,可用以下命令直接提取所有路径:
find ~/.config/Code/User/workspaceStorage -name "workspace.json" -exec jq -r '.folder' {} \; | grep -v null | uniq
提示:没有安装jq的话,也可以直接进入对应文件夹手动查看
workspace.json文件的folder字段值。
内容的提问来源于stack exchange,提问作者Carlos Pinzón
相关产品推荐
相关产品推荐

