2017-06-01 1 views
0

Ich habe eine Konfigurationsdatei, die mehrere Variablennamen mit einem Wert hat.Konfiguration importieren und Variablen setzen. Ersetzen Sie auch Schrägstrich zu Backslash

z. variable=value

Einige dieser Variablen haben Pfadwerte wie C:/folder1. Andere Variablen haben Werte wie file1.txt.

Jetzt haben die Pfadwerte Schrägstriche, weil ich dieselbe Konfigurationsdatei für Shell-Skripte verwende. Daher muss ich die forwardslashes in Backslashes für dieses Stapelscript konvertieren.

Wenn ich den Befehl ausführen darunter alle Konfigurationsvariablen und ihre Werte in meine Batch-Datei importiert, während auch die Schrägstriche Umwandlung:

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

Während diese großen Werke, die nicht Pfadwerte betroffen. So bekommen zum Beispiel die Variablen mit Dateinamen einen Pfad vorfixiert. Statt file1=file1.txt zu haben, wird es file1=C:\folder1\file1.txt

Gibt es eine Weise, die ich die Schrägstriche für die Variablen umwandeln kann, die Pfade in, während die anderen Variablen mit Dateinamen in etc importieren, ohne Probleme?

Antwort

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

benutzte ich eine Datei q44312204.txt einige Dummy-Daten für meine Tests genannt enthält.

Nachdem die Variable %%A auf einen Wert gesetzt, der call Sätze %%A zu %% %%A:/=\ %%, die zum %%A = file1 und %%B = C: /folder1/file1.txt file1 = C:/folder1/file1.txt dann ruft set "file1 = %% file1:/=\ %%" Sätze, die seit set "file1 = % file1:/=\ %"%% führt eine ist escaped- % (beachten Sie, dass in diesem Absatz habe ich Leerzeichen in der Befehlsbefinden ausgeführt zur Betonung eingefügt)

beachten Sie, dass die ~f, die die Umwandlung ausführen, aber das aktuelle Verzeichnis prefixing wird entfernt.

+0

Dies tat genau das, wonach ich fragte. Vielen Dank! – Bob

0

Unter Umständen können Sie so etwas wie dies zu tun:

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

ich wahrscheinlich $%%A so obwohl Platzierung etwas am Anfang würde vorschlagen, dass man leicht alle Ihre Variablen auf einmal so Set $ zugreifen kann.

Verwandte Themen