Windows10内置Linux子系统(WSL)路径转换

在使用WSL中,因为Windows和Linux路径语法不同问题,cd到某一个目录比较麻烦。因为wsl中有一个工具专门用于路径转换用于提供便利性。

语法:wsl wslpath [option] [path]

option 参数,默认-u

  • -a:强制结果为绝对路径格式
  • -u:从Windows路径转换为WSL路径(默认)
  • -w:从WSL路径转换为Windows路径
  • -m:从WSL路径转换为Windows路径,使用“/”而不是“\”

path 代表要转换的文件夹路径

Windows路径转换为WSL Linux路径

Windows的目录在WSL的mnt目录中,因此转换成功了的根目录都是mnt开头。

此命令在CMD控制台执行

转换某一个目录

wsl wslpath  "F:/download"

转换当前目录

wsl wslpath "%cd%"

WSL Linux路径转换为Windows路径

此命令在WSL中执行

转换某一个目录

 wslpath -w "/mnt/f/download"

转换当前目录

wslpath -w  `pwd`

文件夹空白处添加右键菜单当前目录转换WSL目录并拷贝

参考两篇博客:

win + r 然后输入 regedit 打开注册表,找到 HKEY_CLASSES_ROOT\Directory\Background\shell

  1. 右击新建项GetWslPath.点击,右侧的默认,双击,改变数值数据为复制WSL路径到剪切板,这就是显示在右键菜单中的名字
  2. 在空白处右键新建,字符串值。改名为 Icon ,并且数值数据设置为图片路径,这就是右键菜单的图标了。推荐使用此文件
  3. GetWslPath右键,新建,项,命名为 command ,将 command 默认的数值数据改为 wscript "D:\Program Files\Wsl\RunCmd.vbs" "%V"

RunCmd.vbs脚本如下

WScript.CreateObject("WScript.Shell").Run  chr(34) &"D:\Program Files\Wsl\PathToWsl.bat"& chr(34)& " " & chr(34) & WScript.Arguments.Item(0) & chr(34) , 0, True

PathToWsl.bat脚本如下

@echo off
chcp 65001

REM 路径转换,执行结果赋给参数
for /f "delims=" %%a in ('"wsl wslpath %1"') do @set wsl_path="%%a"

REM 拷贝至剪切板
echo | set /p="cd %wsl_path%" | clip

注册表文件导出如下

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\GetWslPath]
@="复制WSL路径到剪切板"
"Icon"="D:\\Program Files\\Wsl\\linux.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\GetWslPath\command]
@="wscript \"D:\\Program Files\\Wsl\\RunCmd.vbs\"  \"%V\""

posted @ 2022-10-24 13:22  雨水的命运  阅读(3070)  评论(0编辑  收藏  举报