Space im delimiter entfernen
space im Delimiter verhindern
Hallo Leute,
Habe ein kleines Problem beim Auslesen einer Liste via Batch.
folgendes Textfile (Demoauszug)
soll in einen Copybefehl umgewandelt werden. Dazu habe ich eine kleine Demo Batch Datei gemacht welche die eingelesenen Parameter in Variablen schreibt:
Ich würde erwarten dass in der Datei x_runcopy.bat dann folgendes ankommt:
es kommt aber leider das an:
u.s.w
Das bedeutet dass der delimiter auch auf SPACE als Trenner reagiert, was ich aber nicht will. Es soll einzig das "," als Delimiter gültig sein!
Wenn ich allerdings den call Befehl in ein echo umwandle dann klappt das
z.B.
gibt:
aus.
Kann mir jemand einen Tip geben was ich da falsch mache?
Hallo Leute,
Habe ein kleines Problem beim Auslesen einer Liste via Batch.
folgendes Textfile (Demoauszug)
2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.cab,True,5_
2 - Pocket PC.cabs\Tools\Total Commander\TotalCommander25_PublicBeta3_PB.cab,False,8_
2 - Pocket PC.cabs\Video und Audio\Voice Minder\V1.6 Build 1405\VoiceMinder_WM5.cab,True,7_
soll in einen Copybefehl umgewandelt werden. Dazu habe ich eine kleine Demo Batch Datei gemacht welche die eingelesenen Parameter in Variablen schreibt:
For /F "eol=;delims=, tokens=1,2,3" %%i in (S_kaiser.txt) do call x_runcopy %%i %%j %%k
Ich würde erwarten dass in der Datei x_runcopy.bat dann folgendes ankommt:
%1 = 2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.cab
%2 = true
%3 = 5_
%1= 2
%2= -
%3= Pocket
Das bedeutet dass der delimiter auch auf SPACE als Trenner reagiert, was ich aber nicht will. Es soll einzig das "," als Delimiter gültig sein!
Wenn ich allerdings den call Befehl in ein echo umwandle dann klappt das
z.B.
For /F "eol=;delims=, tokens=1,2,3" %%i in (S_kaiser.txt) do echo %%i__%%j__%%k
gibt:
2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.c
ab__True__5_
2 - Pocket PC.cabs\Tools\Total Commander\TotalCommander25_PublicBeta3_PB.cab__Fa
lse__8_
2 - Pocket PC.cabs\Video und Audio\Voice Minder\V1.6 Build 1405\VoiceMinder_WM5.
cab__True__7_
aus.
Kann mir jemand einen Tip geben was ich da falsch mache?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84251
Url: https://administrator.de/contentid/84251
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo pbelcl!
Das Problem hinsichtlich der Leerzeichen entsteht durch die fehlenden Anführungszeichen, daher:
Um die Anführungszeichen in "x_runcopy" wieder loszuwerden, kannst Du dort anstelle von "%1" "%~1" verwenden.
Grüße
bastla
Das Problem hinsichtlich der Leerzeichen entsteht durch die fehlenden Anführungszeichen, daher:
For /F "eol=; tokens=1,2,3 delims=," %%i in (S_kaiser.txt) do call x_runcopy "%%i" "%%j" "%%k"
Grüße
bastla
Hallo pbelcl!
Ein Lösungsweg wäre, zunächst den benötigten Pfad zu erzeugen und danach ein gewöhnliches "copy" (ohne "x") zu verwenden, also etwa:
Eigentlich sollte es aber auch genügen (wenn Du den Namen der Datei nicht ändern wolltest), als Ziel des "xcopy" nur den Ordner anzugeben und diesen mit "\" abzuschließen, also:
Die Änderung des Dateinamens wäre dann über ein nachfolgendes
auch noch möglich.
Grüße
bastla
Ich such nach dem umgekehrten Befehl, ich wil festlegen dass es eine DATEI ist...
Den habe ich auch schon vergeblich gesucht ...Ein Lösungsweg wäre, zunächst den benötigten Pfad zu erzeugen und danach ein gewöhnliches "copy" (ohne "x") zu verwenden, also etwa:
if Exist "p:\CD's\2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.cab" (
if not exist "p:\CD's\2 - Pocket PC.cabs\0 - Install kaiser\" md "p:\CD's\2 - Pocket PC.cabs\0 - Install kaiser\"
copy "p:\CD's\2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.cab" "p:\CD's\2 - Pocket PC.cabs\0 - Install kaiser\5_SpbMobileShell2_de_arm.cab"
)
Eigentlich sollte es aber auch genügen (wenn Du den Namen der Datei nicht ändern wolltest), als Ziel des "xcopy" nur den Ordner anzugeben und diesen mit "\" abzuschließen, also:
if Exist "p:\CD's\2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.cab" xcopy "p:\CD's\2 - Pocket PC.cabs\Heute Plugins\SPB Mobile Shell\V 2.0\SpbMobileShell2_de_arm.cab" "p:\CD's\2 - Pocket PC.cabs\0 - Install kaiser\"
ren "p:\CD's\2 - Pocket PC.cabs\0 - Install kaiser\SpbMobileShell2_de_arm.cab" "5_SpbMobileShell2_de_arm.cab"
Grüße
bastla