goWSLPath.cmd
is a Windows batch script that allows seamless navigation from Windows Command Prompt to WSL (Windows Subsystem for Linux) filesystem paths. It automatically detects your WSL distribution, converts POSIX paths to Windows UNC paths, and uses pushd
to map them to drive letters.
goWSLPath.cmd <posix_path>
Example:
goWSLPath.cmd /home/path/to/my/folder
This will:
- Auto-detect your WSL distribution (e.g., Ubuntu-22.04)
- Convert
/home/path/to/my/folder
to\\wsl$\Ubuntu-22.04\home\path\to\my\folder
- Map it to a drive letter (e.g., Z:) and navigate there
- Launch a new command prompt session in that location
- Auto-detection: Automatically finds your active WSL distribution
- Error handling: Provides clear feedback if paths don't exist or WSL isn't running
- UNC mapping: Uses Windows' built-in
pushd
to create temporary drive mappings - Unicode-safe: Avoids text parsing issues by testing actual filesystem accessibility
Problem: WSL commands (wsl -l
, wsl -l -v
) output text in UTF-16 encoding with Unicode BOM, making it impossible to parse reliably with standard batch for /F
loops.
Evidence:
type
command displays the text correctlyfindstr
patterns fail even on clearly visible textfor /F
loops find zero lines despite file containing data
Solution: Instead of parsing WSL text output, test actual UNC path accessibility using pushd
commands.
Problem: When a batch script finishes execution, Windows automatically returns to the original directory, undoing any pushd
operations.
Solution: Launch a new command prompt session (cmd /k
) within the target directory to maintain the navigation context.
Problem: Different WSL versions format output differently, and parsing asterisks or "(Default)" markers is unreliable due to encoding.
Solution: Test common distribution names by attempting to access their UNC paths (\\wsl$\<distro>\
) directly.
Critical: Always use setlocal enabledelayedexpansion
and !variable!
syntax when variables are modified within loops or conditional blocks.
- Provide clear diagnostic output showing what the script is testing
- Include suggested remediation steps in error messages
- Test actual functionality rather than relying on text parsing
call goWSLPath.cmd /home/user/project
doskey gwsl=call "C:\path\to\goWSLPath.cmd" $*
gwsl /home/user/project
Place the script in a directory in your PATH, then simply:
goWSLPath /home/user/project
- Windows 10/11 with WSL installed and running
- At least one WSL distribution (Ubuntu variants supported)
- Command Prompt or PowerShell (not Windows Terminal's WSL tabs)
- "Could not find any accessible WSL distribution": Ensure WSL is running (
wsl --status
) - "Failed to access path": Verify the POSIX path exists in WSL (
wsl ls -la /path/to/directory
) - Script exits immediately: Use
call
command or run from within existing command prompt session