You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS中获取运行中VS Code实例的当前工作目录并校验指定路径?

在Node.js中检测运行中VS Code实例的工作目录是否可行?

可以实现,主要有两种可靠的思路,下面分别说明:

方法一:通过VS Code官方CLI命令获取信息

VS Code自带的CLI工具提供了code --status命令,能直接输出当前运行实例的详细信息,包括已打开的工作目录。这种方式无需解析系统进程,准确性更高。

代码示例

const { exec } = require('child_process');

function checkVSCodeWorkspace(targetDir) {
    // 注意:需确保code命令在系统PATH中,否则要指定完整路径
    exec('code --status', (err, stdout) => {
        if (err) {
            console.error('获取VS Code状态失败:', err.message);
            return;
        }

        // 提取工作区文件夹部分
        const workspaceMatch = stdout.match(/Workspace folders:\n((?:\s*- .+\n?)+)/);
        if (!workspaceMatch) {
            console.log('当前无VS Code工作区实例');
            return;
        }

        // 解析每个工作目录路径
        const workspacePaths = workspaceMatch[1]
            .split('\n')
            .map(line => line.trim().replace(/^\*- /, ''))
            .filter(path => path);

        // 匹配目标目录
        if (workspacePaths.includes(targetDir)) {
            console.log(`找到工作目录为${targetDir}的VS Code实例`);
        } else {
            console.log(`未找到工作目录为${targetDir}的VS Code实例`);
        }
    });
}

// 调用示例
checkVSCodeWorkspace('/home/foobar/Desktop/myproject');

注意事项

  • 如果code命令不在系统PATH中,需要替换为VS Code的完整执行路径:
    • Linux:/usr/bin/code
    • macOS:/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
    • Windows:"C:\\Program Files\\Microsoft VS Code\\bin\\code.cmd"

方法二:解析系统进程的启动参数

通过系统命令获取VS Code进程的启动参数,从中提取工作目录。这种方式不依赖VS Code的CLI,但需要处理不同操作系统的进程输出格式。

代码示例

const { exec } = require('child_process');

function checkVSCodeWorkspace(targetDir) {
    let cmd;
    // 根据操作系统选择对应的进程查询命令
    if (process.platform === 'win32') {
        cmd = 'tasklist /v /fi "imagename eq Code.exe" /fo csv';
    } else {
        cmd = 'ps aux | grep -E "(code|Code)" | grep -v grep';
    }

    exec(cmd, (err, stdout) => {
        if (err) {
            console.error('获取进程信息失败:', err.message);
            return;
        }

        const processes = stdout.split('\n').filter(line => line.trim());
        let found = false;

        for (const proc of processes) {
            let workspacePath;
            if (process.platform === 'win32') {
                // 解析Windows的CSV格式输出,提取命令行参数
                const parts = proc.split('","');
                if (parts.length >= 8) {
                    const cmdLine = parts[7];
                    // 匹配最后一个引号内的路径(通常是工作目录)
                    const pathMatch = cmdLine.match(/"([^"]+)"$/);
                    workspacePath = pathMatch ? pathMatch[1] : null;
                }
            } else {
                // 解析Linux/macOS的ps输出,提取code命令后的路径参数
                const parts = proc.split(/\s+/);
                const codeIndex = parts.findIndex(part => part.includes('code'));
                workspacePath = codeIndex !== -1 ? parts[codeIndex + 1] : null;
            }

            if (workspacePath === targetDir) {
                found = true;
                break;
            }
        }

        console.log(found 
            ? `找到工作目录为${targetDir}的VS Code实例` 
            : `未找到工作目录为${targetDir}的VS Code实例`);
    });
}

// 调用示例
checkVSCodeWorkspace('/home/foobar/Desktop/myproject');

注意事项

  • 需处理VS Code不同版本的进程名称(比如Insiders版本是code-insiders或Code - Insiders.exe)。
  • Windows下可能需要管理员权限才能获取完整的进程命令行信息。

内容的提问来源于stack exchange,提问作者user3601578

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:17:43