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
- 右击新建项
GetWslPath
.点击,右侧的默认,双击,改变数值数据为复制WSL路径到剪切板
,这就是显示在右键菜单中的名字 - 在空白处右键新建,字符串值。改名为
Icon
,并且数值数据设置为图片路径,这就是右键菜单的图标了。推荐使用此文件 - 在
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\""