For Schleife für Abgleich mit Text-Datei und Unterverzeichnisse
Hallo zusammen,
habe mich extra angemeldet, da ich bei einem kleinen Problem nicht so schnell weiterkomme. Bin Batch-Anfänger und lese mich grad von einem ins Nächste und komm nicht weiter. OS ist Windows 10.
Das Urproblem wurde hier schon öfters behandelt. Dateien nach Abgleich mit einer Liste verschieben.
Habe deswegen auch schon folgende funktionierende Batch.
Jetzt würde ich das ganze aber nicht nur im aktuellen Verzeichnis, sondern auch in allen Unterverzeichnissen machen.
Sprich in allen Unterverzeichnissen, soll ein Test-Verzeichnis erstellt werden, wohin die abgeglichenen Dateien aus dem Oberverzeichniss verschoben werden.
Hab auch nach langem suchen keine Syntax für die Anwendung von /F und /R gleichzeitig gefunden. Wie muss ich das machen?
Danke für die Hilfe!
habe mich extra angemeldet, da ich bei einem kleinen Problem nicht so schnell weiterkomme. Bin Batch-Anfänger und lese mich grad von einem ins Nächste und komm nicht weiter. OS ist Windows 10.
Das Urproblem wurde hier schon öfters behandelt. Dateien nach Abgleich mit einer Liste verschieben.
Habe deswegen auch schon folgende funktionierende Batch.
md Test
FOR /F "DELIMS=," %%i IN (Test_red.csv) do move "%%i" "Test\%%i"
Jetzt würde ich das ganze aber nicht nur im aktuellen Verzeichnis, sondern auch in allen Unterverzeichnissen machen.
Sprich in allen Unterverzeichnissen, soll ein Test-Verzeichnis erstellt werden, wohin die abgeglichenen Dateien aus dem Oberverzeichniss verschoben werden.
Hab auch nach langem suchen keine Syntax für die Anwendung von /F und /R gleichzeitig gefunden. Wie muss ich das machen?
Danke für die Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 325300
Url: https://administrator.de/contentid/325300
Ausgedruckt am: 24.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Ich hänge mich hier mal an, ich kann dir helfen. Die Schleife die du suchst wäre:
Es wird jetzt das ausführende BAT Verzeichnis mit Unterordner durchsuchst, in jedem Ordner wo eine Test_red.csv existiert wird ein Unterordner Test erstellt (falls er nicht schon existiert) und die Datei dahin verschoben. Aber Achtung ! führst du das 2x hintereinander aus, wird die Datei aus dem Test Ordner natürlich wieder gefunden und wieder verschoben. Um das zu verhindern müsste man die Schleife anweisen den Ordner Test zu ignorieren.
Womit wir jetzt bei meinem Problem wären...
Das %%I wäre bei mir jetzt : E:\!TEST!\USRDIR\TEST\Test_red.csv
Ausgeführt habe ich die Batch im Verzeichnis !TEST!
Wie kann ich das hinkriegen das mir nicht der ganze Verzeichnisbaum angezeigt wird in der Ausgabe, sondern nur ab root des Ausführens !
Meine Ausgabe sollte sein : USRDIR\TEST\Test_red.csv
Mit dem Kürzel %%~dI kann ich nicht Arbeiten, selbst da ist der komplette Baum !TEST!\USRDIR\TEST. Ich brauche aber nur ab ROOT.
Danke für Hilfe
FOR /F "delims=*" %%I IN ('dir /b /s Test_red.csv') do if not exist "%%~dpITest" md "%%~dpITest" && move "%%I" "%%~dpITest"
Es wird jetzt das ausführende BAT Verzeichnis mit Unterordner durchsuchst, in jedem Ordner wo eine Test_red.csv existiert wird ein Unterordner Test erstellt (falls er nicht schon existiert) und die Datei dahin verschoben. Aber Achtung ! führst du das 2x hintereinander aus, wird die Datei aus dem Test Ordner natürlich wieder gefunden und wieder verschoben. Um das zu verhindern müsste man die Schleife anweisen den Ordner Test zu ignorieren.
Womit wir jetzt bei meinem Problem wären...
Das %%I wäre bei mir jetzt : E:\!TEST!\USRDIR\TEST\Test_red.csv
Ausgeführt habe ich die Batch im Verzeichnis !TEST!
Wie kann ich das hinkriegen das mir nicht der ganze Verzeichnisbaum angezeigt wird in der Ausgabe, sondern nur ab root des Ausführens !
Meine Ausgabe sollte sein : USRDIR\TEST\Test_red.csv
Mit dem Kürzel %%~dI kann ich nicht Arbeiten, selbst da ist der komplette Baum !TEST!\USRDIR\TEST. Ich brauche aber nur ab ROOT.
Danke für Hilfe