String zerlegen in Batch
hallo,
ich habe eine datei, in der immer zwei aufeinanderfolgende verzeichnisse bzw. pfade stehen, etwa so:
da das mit der formatierung hier nicht geklappt hat, hab ich mal ein bsp-file hier hocgeladen (125 Byte)
hierbei koennen beide pfade, leerzeichen enthalten. bisher stehen die leerzeichen enthaltenden pfade in anfuehrungszeichen, das muss aber nicht so sein.
wie kann ich nun die beiden pfade aus dem textfile herausziehen?
mit
hole ich die komplette zeile raus.
eigentlich alle stringoperationen versagen, wenn ein anfuehrunggstrich in dieser zeile drin ist, deshalb wollte ich es erstmal weglassen. um nun die beiden pfade zu trennen, muesste ich eigentlich nur herausfinden, wie lange die zeile ist, und an welcher stelle sich der 2. doppelpunkt befindet. dies gestaltet sich leider auch etwas schwierig, da ich leider schon nicht weiss, wie lange die zeile ist. auch kann ich die zeile nicht durchgehen, dennw enn ich folgende befehle ausfuehre:
dann rafft die cmd nicht, dass er %Cursor% ersetzen soll. Ich mach da jetzt ewig dran rum, mir faellt aber wirklich nix mehr ein. habt ihr da ne idee?
Esco
ich habe eine datei, in der immer zwei aufeinanderfolgende verzeichnisse bzw. pfade stehen, etwa so:
da das mit der formatierung hier nicht geklappt hat, hab ich mal ein bsp-file hier hocgeladen (125 Byte)
hierbei koennen beide pfade, leerzeichen enthalten. bisher stehen die leerzeichen enthaltenden pfade in anfuehrungszeichen, das muss aber nicht so sein.
wie kann ich nun die beiden pfade aus dem textfile herausziehen?
mit
for /F "tokens=1 delims=" %%i in (%iniFile%) DO (set Zeile=%%i & call:ZeileBearbeiten)
eigentlich alle stringoperationen versagen, wenn ein anfuehrunggstrich in dieser zeile drin ist, deshalb wollte ich es erstmal weglassen. um nun die beiden pfade zu trennen, muesste ich eigentlich nur herausfinden, wie lange die zeile ist, und an welcher stelle sich der 2. doppelpunkt befindet. dies gestaltet sich leider auch etwas schwierig, da ich leider schon nicht weiss, wie lange die zeile ist. auch kann ich die zeile nicht durchgehen, dennw enn ich folgende befehle ausfuehre:
:ZeileBearbeiten
for /L %%Z in (0, 1, 3) do (call:Copy %%Z)
goto:eof
:Copy
set Cursor=%1
echo %Zeile:~%Cursor%,1%
goto:eof
Esco
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 40618
Url: https://administrator.de/contentid/40618
Ausgedruckt am: 13.11.2024 um 10:11 Uhr
4 Kommentare
Neuester Kommentar
Moin escobar,
wenn Du als Delimiter in Deiner *.ini-Datei ein Semikolon (oder ein "#" oder oder..) nimmst, dann hast Du kein Rumgeeiere mehr.
Und es ist auch beliebig, ob die einzelnen Quell/Ziel-Pfade in Anführungszeichen stehen oder nicht.
Demo am CMD-Prompt; "@echo copy" statt dem eigentlichen Befehl "copy"
## bzw. als Batch-Oneliner
Gruß
Biber
wenn Du als Delimiter in Deiner *.ini-Datei ein Semikolon (oder ein "#" oder oder..) nimmst, dann hast Du kein Rumgeeiere mehr.
Und es ist auch beliebig, ob die einzelnen Quell/Ziel-Pfade in Anführungszeichen stehen oder nicht.
Demo am CMD-Prompt; "@echo copy" statt dem eigentlichen Befehl "copy"
>type ggh.ini
D:\exage\;G:\symber\exage\
D:\GG VII\;G:\symber\GG_VII\
"D:\GG VI\";G:\symber\GG_VI\
C:\boot.ini;G:\symber\
>for /f "delims=; tokens=1-2" %i in (ggh.ini) do @echo copy "%~i" "%~j"
copy "D:\exage\" "G:\symber\exage\"
copy "D:\GG VII\" "G:\symber\GG_VII\"
copy "D:\GG VI\" "G:\symber\GG_VI\"
copy "C:\boot.ini" "G:\symber\"
:: --- snipp CopyGghIni.bat
@for /f "delims=; tokens=1-2" %i in (ggh.ini) do @echo copy "%~i" "%~j"
::----- snapp CopygghIni.bat
Gruß
Biber