Zeile Zerlegen - Schleife
Hallo zusammen,
ich habe folgende Situation:
Ich lese eine Variable aus.
Diese hat folgenden Inhalt: "(a.dmp,b.dmp,c.dmp,d.dmp)" ohne ""
z. B. set var1=(a.dmp,b.dmp,c.dmp,d.dmp)
Jetzt möchte ich diese weiter verarbeiten und auf die jeweiligen Dateien zugreifen.
Das geht mit einer FOR-Schleife, nur das Problem ist, dass dort beliebig viele Dateien drin stehen können.
z. B. set var1=(a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp)
Wie greife ich jetzt auf jede Datei einzeln zu?
Die Variablen in FOR-Schleifen gehen nur bis %z oder?
Die Schleife soll entsprechend wiederholen, bis keine Datei mehr im String ist.
Die Angabe der Dateien in dem String sind beliebig, ich habe also keinen festen Wert.
Über Hilfe würde ich mich sehr freuen!
Grüße,
Manuel
ich habe folgende Situation:
Ich lese eine Variable aus.
Diese hat folgenden Inhalt: "(a.dmp,b.dmp,c.dmp,d.dmp)" ohne ""
z. B. set var1=(a.dmp,b.dmp,c.dmp,d.dmp)
Jetzt möchte ich diese weiter verarbeiten und auf die jeweiligen Dateien zugreifen.
Das geht mit einer FOR-Schleife, nur das Problem ist, dass dort beliebig viele Dateien drin stehen können.
z. B. set var1=(a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp)
Wie greife ich jetzt auf jede Datei einzeln zu?
Die Variablen in FOR-Schleifen gehen nur bis %z oder?
Die Schleife soll entsprechend wiederholen, bis keine Datei mehr im String ist.
Die Angabe der Dateien in dem String sind beliebig, ich habe also keinen festen Wert.
Über Hilfe würde ich mich sehr freuen!
Grüße,
Manuel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92378
Url: https://administrator.de/forum/zeile-zerlegen-schleife-92378.html
Ausgedruckt am: 20.05.2025 um 17:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo manuelccy und willkommen im Forum!
Versuch es so:
Anmerkung zu Zeile 2: Hier werden das erste und das letzte Zeichen (die Klammern) von %var1% entfernt - alternativ (und eigentlich besser) kannst Du das auch in der "for"-Schleife erledigen (womit die Zeile 2 überflüssig würde), also:
Grüße
bastla
[Edit] Na, da hab' ich ja mal wieder furchtbar um die Ecke (in Form einer Klammer
) gedacht ... [/Edit]
Versuch es so:
@echo off & setlocal
set var1=(a.dmp,b.dmp,c.dmp,d.dmp)
set var1=%var1:~1,-1%
for /f "delims=" %%i in ("%var1%") do for %%a in (%%i) do echo Bearbeite Datei: %%a
for /f "delims=" %%i in ("%var1:~1,-1%") do for %%a in (%%i) do echo Bearbeite Datei: %%a
Grüße
bastla
[Edit] Na, da hab' ich ja mal wieder furchtbar um die Ecke (in Form einer Klammer
Moin manuelccy,
willkommen im Forum.
Oder, wenn es mal schneller gehen soll:
[Beispiel am CMD-Prompt, ">" ist mein Prompt]
Aber um Himmels willen... was für ein Skript übergibt Dir denn eine Variable in so einer kranken Form?
Die sollen eine normale Liste/Textdatei schreiben und Dir den Namen der Datei übergeben.
Grüße
Biber
willkommen im Forum.
Oder, wenn es mal schneller gehen soll:
[Beispiel am CMD-Prompt, ">" ist mein Prompt]
>set var1=(a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp,a.dmp,b.dmp,c.dmp,d.dmp)
>for %i in %var1% do @echo Verarbeite Datei %i
Verarbeite Datei a.dmp
Verarbeite Datei b.dmp
Verarbeite Datei c.dmp
Verarbeite Datei d.dmp
Verarbeite Datei a.dmp
Verarbeite Datei b.dmp
Verarbeite Datei c.dmp
Verarbeite Datei d.dmp
Verarbeite Datei a.dmp
Verarbeite Datei b.dmp
Verarbeite Datei c.dmp
Verarbeite Datei d.dmp
Verarbeite Datei a.dmp
Verarbeite Datei b.dmp
Verarbeite Datei c.dmp
Verarbeite Datei d.dmp
Aber um Himmels willen... was für ein Skript übergibt Dir denn eine Variable in so einer kranken Form?
Die sollen eine normale Liste/Textdatei schreiben und Dir den Namen der Datei übergeben.
Grüße
Biber
Hallo manuelccy!
Das Stichwort für Dein Problem ist "delayedExpansion" ...
So sollte es gehen:
Soferne es Dateinamen mit einem "!" gibt, müsstest Du auf "delayedExpansion" verzichten und das Zusammenfügen in ein Unterprogramm auslagern.
Grüße
bastla
P.S.: Die Änderung in der Zeile 6 entfernt das letzte Komma ...
Das Stichwort für Dein Problem ist "delayedExpansion" ...
So sollte es gehen:
setlocal enabledelayedexpansion
set pipegesamt=(
for /f "delims=" %%i in ("%var1%") do for %%a in (%%i) do (
starte Pipe mit %%a
set pipegesamt=!pipegesamt!%%a,
)
set pipegesamt=%pipegesamt:~,-1%)
Importiere pipegesamt...
Grüße
bastla
P.S.: Die Änderung in der Zeile 6 entfernt das letzte Komma ...