django.durano
Goto Top

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.

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ß

Content-ID: 391795

Url: https://administrator.de/contentid/391795

Ausgedruckt am: 23.11.2024 um 17:11 Uhr

137443
Lösung 137443 06.11.2018 aktualisiert um 16:40:17 Uhr
Goto Top
@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!
)
Gruß l.
Django.Durano
Django.Durano 07.11.2018 um 18:05:15 Uhr
Goto Top
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?


Gruß

Django
137443
Lösung 137443 07.11.2018 aktualisiert um 18:17:31 Uhr
Goto Top
Zitat von @Django.Durano:

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?
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.
Django.Durano
Django.Durano 10.11.2018 um 19:34:43 Uhr
Goto Top
Vielen Dank für die Erklärung und die Lösung.


Gruß