windows - Import konfiguration og sæt variabler. Udskift også fremad skråstreg til backslash

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en konfigurationsfil, der har flere variable navne med en værdi.


F.eks. variable=value


Nogle af disse variabler har vejværdier som C:/folder1. Andre variabler har værdier, der er et filnavn som file1.txt.


Nu har vejværdierne skråstreger fremad, fordi jeg bruger den samme konfigurationsfil til shell-scripts. Derfor er jeg nødt til at konvertere forspidserne til backslashes for dette batch script.


Når jeg kører kommandoen nedenfor, importerer den alle konfigurationsvariablerne og deres værdier i min batchfil, mens de også konverterer skråstregerne:


for /f "delims== tokens=1*" \%\%A in (configconfig.sh) do (set "\%\%A=\%\%~fB")


Selvom dette virker godt, påvirkes ikke-path værdierne. Så for eksempel får variablerne med filnavne en vej forudindstillet til den.
Så i stedet for at have file1=file1.txt bliver det file1=C:folder1file1.txt


Er der en måde, jeg kan konvertere skråstregerne til de variabler, der har stier i, mens de andre variabler importeres med filnavne i osv. Uden problemer?

Bedste reference


for /f "delims== tokens=1*" \%\%A in (q44312204.txt) do set "\%\%A=\%\%B"& CALL SET "\%\%A=\%\%\%\%A:/=\%\%"


Jeg brugte en fil med navnet q44312204.txt, der indeholder nogle dummy data til min testning.


\%\%A til \%\% \%\%A:/= \%\%, som for \%\%A=fil1 og \%\%B=C:/folder1/file1.txt sæt file1=C:/folder1/file1.txt kalder derefter set "file1 = \%\% file1:/= \%\%", som udfører set "file1 = \% file1:/= \%" siden \%\% er en flugt - \% (bemærk at i dette afsnit har jeg indsat mellemrum i kommandoen-bliver-udført som vægt)


Bemærk, at ~f, som udførte konverteringen, men at prefikse nuværende katalog er blevet fjernet.

Andre referencer 1


Du kan muligvis gøre noget som dette:


@Echo Off
SetLocal EnableDelayedExpansion
For /F "UseBackQ Tokens=1* Delims==" \%\%A In ("configconfig.sh") Do (Set "\_=\%\%B"
    Set "\%\%A=!\_:/=!")


Jeg vil nok foreslå, at du placerer noget i starten $\%\%A, så du nemt kan få adgang til alle dine variabler på en gang dermed Set $.