String automatisch anpassen (erweitern oder kürzen)
Hallo an alle,
folgendes Problem: Ich lasse in meinem Batchscript eine Textdatei Zeile für Zeile auslesen.
Nun möchte ich einen String erstellen der wie folgt aussehen soll: "Zeile1" "Zeile2" "Zeile3"
und so weiter. Die Zeilenanzahl variiert dabei und die Variable soll natürlich immer die genaue Anzahl an Zeilen beinhalten Ich habe bereits die einzelnen Zeilen ausgelesen und jeweils in eine eigene Variable gepackt:
Das heißt, z.B. die zweite Zeile lässt sich so ausgeben: ECHO zeile[!2!]
Aber wie füge ich das Ganze nun zu einem einzigen String zusammen?
folgendes Problem: Ich lasse in meinem Batchscript eine Textdatei Zeile für Zeile auslesen.
Nun möchte ich einen String erstellen der wie folgt aussehen soll: "Zeile1" "Zeile2" "Zeile3"
und so weiter. Die Zeilenanzahl variiert dabei und die Variable soll natürlich immer die genaue Anzahl an Zeilen beinhalten Ich habe bereits die einzelnen Zeilen ausgelesen und jeweils in eine eigene Variable gepackt:
For /f "delims=" %%i IN (Strings.txt) DO (
SET /a zaehler=zaehler+1
SET zeile[!zaehler!]=%%i
)
Aber wie füge ich das Ganze nun zu einem einzigen String zusammen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330611
Url: https://administrator.de/contentid/330611
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
9 Kommentare
Neuester Kommentar
Joa, dafür brauchst du doch aber nicht vorher ein assoziatives Array zu erstellen. Kannst den String doch auch gleich in der Schleife zusammenbauen.
@echo off &setlocal
set "file=Strings.txt"
setlocal EnableDelayedExpansion
set "paths="
<"!file!" (
for /f %%i in ('type "!file!"^|find /c /v ""') do for /l %%j in (1 1 %%i) do (
set "line=" &set /p "line="
if defined line set paths=!paths! "C:\Games\!line!"
)
)
echo !paths:~1!
pause
Hallo CreatorX.
1) Beim Zusammenbauen des Strings entsteht ein vorangestelltes Leerzeichen. Das :~1 schneidet dieses weg (sieh dir dazu die Hilfe zu SET an mittels
2) Ja gibt es. Die Beschränkung ist 8191 Zeichen und gilt für die gesamte Kommandozeile (bei einem Klammernblock mit mehreren Zeilen, für den gesamten Block).
1) Beim Zusammenbauen des Strings entsteht ein vorangestelltes Leerzeichen. Das :~1 schneidet dieses weg (sieh dir dazu die Hilfe zu SET an mittels
set /?
). Da das vor dem ersten Anführungszeichen steht, ist es für die Übergabe des Strings als Gruppe von Argumenten unerheblich, da hast du Recht.2) Ja gibt es. Die Beschränkung ist 8191 Zeichen und gilt für die gesamte Kommandozeile (bei einem Klammernblock mit mehreren Zeilen, für den gesamten Block).