批处理脚本:使用 wslpath 将路径转换为 ​​linux 格式

Batch script: Convert path to linux format using wslpath

我试图使用 wsl wslpath 将 .bat 脚本的当前工作目录转换为 linux 格式。向您展示它适用于 CMD:

但是,当我把它放在.bat 文件中,并将%cd% 更改为%~dp0 时,路径是空的:

test.bat 包含:

FOR /F %%i IN ('wsl wslpath -a %~dp0') DO set lp=%%i
echo %lp%

知道为什么吗?

试试这个:

echo "%cd%" -- "%~dp0"

%cd% returns 没有结束反斜杠的路径。所以你可以添加第二个变量来清除它。

set "scriptDir=%~dp0"
set "scriptDir=%scriptDir:~0,-1%"

UPDATE(仅限字符串替换 - 使用 toLinuxPath 子例程)

@echo off

call ::toLinuxPath "%userprofile%\AppData\Local\Temp" tempF
echo %tempF%
exit /b 0

:toLinuxPath [returnVariable - the result will be stored in it; If omitted will be only echoed]
setlocal 

    set "_path=%~p1"
    set "name=%~nx1"
    set "drive=%~d1"

    set "rtrn=%~2"

    set "result=/mnt/%drive:~0,1%%_path:\=/%%name%"


endlocal & (
    if "%~2" neq "" (
        set "%rtrn%=%result%"
    ) else (
        echo %result%
    )
)