Konverter Windows-sti til Ubuntu Bash-sti i Batch Script - Trin-for-Trin Guide

Hvordan kan en Windows-sti som "C:\some path\file.avi" konverteres til en sti som "/mnt/c/some\ path/file.avi", som Windows Ubuntu Bash kan forstå, når den bruges i et batch script?

For at konvertere en Windows-sti til en Ubuntu Bash-sti i et batch script, skal du erstatte backslashes med forward slashes, tilføje "/mnt/" præfikset og håndtere mellemrum korrekt.

Konvertering af Windows-sti til Ubuntu Bash-sti i et Batch Script

For at konvertere en Windows-sti som "C:\some path\file.avi" til en sti, som Windows Ubuntu Bash kan forstå, som "/mnt/c/some\ path/file.avi", kan du følge disse trin i et batch script:

  1. Erstat backslashes med forward slashes: Windows-stier bruger backslashes (\), mens Unix-baserede systemer som Ubuntu Bash bruger forward slashes (/).
  2. Tilføj "/mnt/" præfikset: Ubuntu Bash på Windows mount'er Windows-drev under "/mnt/". For eksempel bliver "C:" til "/mnt/c".
  3. Håndter mellemrum: Mellemrum i stien skal enten undgås eller håndteres korrekt ved at bruge escape-tegn (\) eller ved at omslutte stien i anførselstegn.

Her er et eksempel på et batch script, der udfører denne konvertering:

@echo off
setlocal enabledelayedexpansion

rem Input Windows path
set "win_path=C:\some path\file.avi"

rem Convert drive letter to /mnt format
set "bash_path=!win_path:C:=/mnt/c!"

rem Replace backslashes with forward slashes
set "bash_path=!bash_path:\=/!"

rem Handle spaces by escaping them
set "bash_path=!bash_path: =\ !"

echo %bash_path%
endlocal

Forklaring af scriptet:

  • setlocal enabledelayedexpansion: Aktiverer forsinket ekspansion, hvilket er nødvendigt for at kunne ændre variabler inden for en loop eller en blok.
  • set "win_path=C:\some path\file.avi": Definerer den oprindelige Windows-sti.
  • set "bash_path=!win_path:C:=/mnt/c!": Erstatter drevbogstavet med "/mnt/c".
  • set "bash_path=!bash_path:\=/!": Erstatter backslashes med forward slashes.
  • set "bash_path=!bash_path: =\ !": Håndterer mellemrum ved at escape dem.
  • echo %bash_path%: Udskriver den konverterede sti.
  • endlocal: Afslutter den forsinkede ekspansion.

Dette script vil konvertere "C:\some path\file.avi" til "/mnt/c/some\ path/file.avi", som kan bruges i Windows Ubuntu Bash.