Frage zu for-schleife mehrere Ausdrücke gleichzeitig
Hallo,
ich hätte eine Frage zu der for-schleife.
Ich habe zwei Ordner (Test/Test2) in denen befinden sich jeweils mehrere mkv's, in beiden Ordner immer die gleiche Anzahl.
In den Ordnern sind dann mkv's z.b. Test1.mkv, test2.mkv und im anderen Ordner dann 1test.mkv, 2test.mkv.
Nun möchte ich gerne die Dateien aus den Ordnern auslesen und in einer For-schleife weiterverarbeiten.
Mit dieser For-Schleife kann ich ohne weiteres die Dateien aus dem Ordner Test auslesen und weiterverarbeiten.
Problem ist das ich so ja nur die Dateien aus dem Ordner Test bekomme aber nicht aus dem Ordner Test2, ich bräuchte aber immer beide Dateinamen
aus beiden Ordner zur Weiterverarbeitung.
Nun gäbe es ja noch folgende Möglichkeiten die mir einfallen.
Das führt dazu das beide Ordner ausgelesen werden aber jeder Ordner nacheinander und in einem Schleifenzyklus immer nur eine Datei.
Ausgabe wäre dann für den Code.
Weitere Möglichkeit wäre natürlich die Ordner vorher beide Einlesen und das ganze dann in Variablen setzen und diese dann zu verwenden.
Und das ganze dann für beide Ordner.
Als letzte Möglichkeit die ich aktuell auch so anweden fällt mir noch ein den Inhalt vom Ordner Test auszulesen, und die Dateien im Ordner Test2
genauso zu benennen allerdings dann mit einem Kürzel noch hintendran.
Meine Frage wäre jetzt gibt es fernab von diesen Möglichkeiten noch etwas wie man das evtl. innerhalb einer For-Schleife mit einem recht kurzen Code lösen könnte?
Gruß
ich hätte eine Frage zu der for-schleife.
Ich habe zwei Ordner (Test/Test2) in denen befinden sich jeweils mehrere mkv's, in beiden Ordner immer die gleiche Anzahl.
In den Ordnern sind dann mkv's z.b. Test1.mkv, test2.mkv und im anderen Ordner dann 1test.mkv, 2test.mkv.
Nun möchte ich gerne die Dateien aus den Ordnern auslesen und in einer For-schleife weiterverarbeiten.
for /f "delims=" %%i in ('dir /b /a-d "C:\Test\*"') do (
set str=%%i
)
Mit dieser For-Schleife kann ich ohne weiteres die Dateien aus dem Ordner Test auslesen und weiterverarbeiten.
Problem ist das ich so ja nur die Dateien aus dem Ordner Test bekomme aber nicht aus dem Ordner Test2, ich bräuchte aber immer beide Dateinamen
aus beiden Ordner zur Weiterverarbeitung.
Nun gäbe es ja noch folgende Möglichkeiten die mir einfallen.
for /f "delims=" %%i in ('dir /b /a-d "C:\Test\*" "C:\test2\*"') do (
echo %%i
pause
)
Das führt dazu das beide Ordner ausgelesen werden aber jeder Ordner nacheinander und in einem Schleifenzyklus immer nur eine Datei.
Ausgabe wäre dann für den Code.
test1.mkv
pause
test2.mkv
pause
1test.mkv
pause
2.testmkv
usw.
Weitere Möglichkeit wäre natürlich die Ordner vorher beide Einlesen und das ganze dann in Variablen setzen und diese dann zu verwenden.
for /f "delims=" %%i in ('dir /b /a-d "C:\Test\*"') do (
set /a cntr=!cntr! + 1
set test!cntr!=%%i
)
Und das ganze dann für beide Ordner.
Als letzte Möglichkeit die ich aktuell auch so anweden fällt mir noch ein den Inhalt vom Ordner Test auszulesen, und die Dateien im Ordner Test2
genauso zu benennen allerdings dann mit einem Kürzel noch hintendran.
Test1.mkv
test2.mkv
test1_1.mkv
test2_2.mkv
for /f "delims=" %%i in ('dir /b /a-d "C:\Test\*"') do (
set str=%%i
echo C:\test\!str!
echo c:\test2\!str!_1
)
Meine Frage wäre jetzt gibt es fernab von diesen Möglichkeiten noch etwas wie man das evtl. innerhalb einer For-Schleife mit einem recht kurzen Code lösen könnte?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 391795
Url: https://administrator.de/contentid/391795
Ausgedruckt am: 23.11.2024 um 17:11 Uhr
4 Kommentare
Neuester Kommentar
@echo off &setlocal ENABLEDELAYEDEXPANSION
set "folderA=C:\Test1"
set "folderB=C:\Test2"
for /f %%a in ('dir /b /a-d "%folderA%" ^| find /c "."') do set cnt=%%a
for /L %%a in (1 1 %cnt%) do (
for /f "tokens=1,* delims=:" %%b in ('dir /b /a-d "%folderA%" ^| findstr /n . ^| findstr /b "%%a:" ') do set "fileA=%%c"
for /f "tokens=1,* delims=:" %%b in ('dir /b /a-d "%folderB%" ^| findstr /n . ^| findstr /b "%%a:" ') do set "fileB=%%c"
echo !fileA! !fileB!
)
Zitat von @Django.Durano:
Danke für deine Antwort.
Zum Verständnis.
Hier wird Quasi in FolderA gegangen mit dem dir Befehl und zuerst über findstr /n . die Zeilennummer der aktuellen Trefferzeile ausgegeben und in %%a gespeichert. Dann wird über findstr /b %%a eben diese Zeilenummer gesucht am Zeilenanfang und dann deren Wert/Name ausgegeben, was letztendlich dann %%c ist.
Habe ich das soweit richtig verstanden?
Nicht ganz, das erste Findstr schreibt die Zeilennummern vor alle Zeilen und das nächste findstr sucht am Zeilenanfang nach der entsprechenden Zeilennummer und speichert nur den Inhalt der Zeile in der Variablen.Danke für deine Antwort.
Zum Verständnis.
> for /f "tokens=1,* delims=:" %%b in ('dir /b /a-d "%folderA%" ^| findstr /n . ^| findstr /b "%%a:" ') do set "fileA=%%c"
>
Hier wird Quasi in FolderA gegangen mit dem dir Befehl und zuerst über findstr /n . die Zeilennummer der aktuellen Trefferzeile ausgegeben und in %%a gespeichert. Dann wird über findstr /b %%a eben diese Zeilenummer gesucht am Zeilenanfang und dann deren Wert/Name ausgegeben, was letztendlich dann %%c ist.
Habe ich das soweit richtig verstanden?