系统学习 Windows 学习路径:从 CMD 到 PowerShell、系统网络,再到 WSL 与 Server

wslpath

在 Windows 与 WSL 路径之间转换,供跨系统命令传参。

补充说明

wslpath 是 WSL 发行版内的小工具,把 Windows 盘符路径转成 /mnt/c/...,或把 Linux 路径转成 Windows 可识别的 \\wsl.localhost\<发行版>\...。默认方向是 Windows 转 Linux;-u 强制转 Unix 路径,-w 转 Windows 路径,-m 转成带盘符和正斜杠的形式(如 C:/Users/me),-a 把相对路径转成绝对路径。

它主要做字符串转换,不验证目标是否存在,也不改变文件权限。WSL1 和 WSL2 都有这个工具,但 WSL2 通过 9P 访问 /mnt/c,大量小文件操作会明显变慢。/mnt/c 这个挂载点可以在 /etc/wsl.conf 的 [automount] 里改,所以可移植脚本不要硬编码,应该用 wslpath 推导。

从 CMD 调用时写 wsl wslpath ...,默认在默认发行版里执行;需要指定发行版用 wsl -d <名称> -- wslpath ...。转换出的 \\wsl.localhost\ 在较新 Windows 上可用,老版本或部分应用只认 \\wsl$\<发行版>\...;-m 适合需要 C:/ 形式路径的 Windows 程序。

常用示例

# 1. Windows 路径转 WSL 路径,输出 /mnt/c/Users/me/project
C:\> wsl wslpath -u "C:\Users\me\project"

# 2. Linux 路径转 Windows UNC 路径,便于资源管理器或 Windows 程序打开
C:\> wsl wslpath -w /home/me/project

# 3. 转成带盘符的正斜杠形式,输出 C:/Users/me
C:\> wsl wslpath -m /mnt/c/Users/me

# 4. 路径含空格时仍要加引号,否则参数会被拆开
C:\> wsl wslpath -u "C:\Program Files\App"

# 5. 指定发行版,避免默认发行版不是目标环境
C:\> wsl -d Ubuntu -- wslpath -w /home/me/notes.txt

# 6. D 盘转成 D:/data,适合传给只认盘符路径的 Windows 工具
C:\> wsl wslpath -w /mnt/d/data

# 7. 把转换结果交给 Windows 程序;批处理里 %i 要写成 %%i
C:\> for /f "delims=" %i in ('wsl wslpath -w /home/me/notes.txt') do notepad.exe "%i"

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. wslpath -u、-w、-m 分别输出什么形式?
  2. 为什么在 CMD 里直接运行 wslpath 会失败?正确写法是什么?
  3. \\wsl.localhost\ 打不开时,应该尝试什么替代形式?
答案
  1. -u 转 Unix 路径(如 /mnt/c/...),-w 转 Windows UNC 路径,-m 转带盘符的正斜杠路径(如 C:/...)。
  2. wslpath 是 WSL 内的工具,不在 Windows PATH;应写 wsl wslpath ... 或进入 WSL 后调用。
  3. 换用老式 \\wsl$\<发行版>\...,或把该路径映射为网络驱动器。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令