如何从 cmd.exe 获取 WSL Linux 路径?

如何从 cmd.exe 获取 WSL Linux 路径?

我经常需要从 Windows 了解 WSL 挂载的路径名。我现在已经看到了很多该问题的草图解决方案,所以我认为我应该分享我的方法。

此类用例可能是针对从 cmd.exe 运行的某些内容运行 Linux 工具,或从 Windows 开发环境中使用 gdb 调试某些内容。

例如:“C:\Windows\System32”=“/mnt/c/Windows/System32”

答案1

这是我想出的一个技巧。下面这行代码将提取 CWD 又名 %CD%,并将其放入名为 LNX_PATH 的变量中

    for /f %p in ('bash.exe -c "pwd"') do set LNX_PATH=%p

这是一个简化的批处理文件示例,它将使用 vi 从 Windows 文档目录中打开名为“test.txt”的文本文件。

@echo off

:: This is the path to the file I want to launch using vi...
Set WIN_DOC_PATH=%UserProfile%\Documents

:: Switch to that path, get the CWD (linux style) and switch back
pushd "%WIN_DOC_PATH%"
    for /f %%n in ('bash.exe -c "pwd"') do set LNX_DOC_PATH=%%n
popd

:: Launch vi (via bash) using the correct path format
bash.exe -c "vi %LNX_DOC_PATH%/test.txt"

当该批处理退出时,您将回到开始处的 cmd.exe。

如果有人有更好的(非粗略的)方法来获得这条路径,我会很想知道!

相关内容