Unterordner durchsuchen und bei Bedingungserfüllung mitschreiben.
Hallo,
ich habe hier einen Ordner, der aus vielen Unterordnern besteht, nach dem Muster "234567 Florian Fliege", wobei die Zahl immer ein eindeutiger Wert ist. Wie es der Teufel so will, verschwinden manche dieser Unterordner in andere Unterordner und sind dann (vermeintlich) "weg" und der Jammer groß. Mittlerweile haben sich wohl einige solcher Leichen angesammelt. Diese möchte ich aufspüren, und zwar nach diesem Schema:
- Nimm alle Unterordner in diesem Ordner, die mit einer 2 beginnen, gefolgt von 5 weiteren Zahlen und einem Leerzeichen.
- Durchsuche in den Unterordnern, die dieses Kriterium erfüllen, wiederum alle Unterordner:
wenn sich in einem (oder einigen oder allen) dieser Unterordner wieder ein Unterordner befindet, der mit einer 2 beginnt, gefolgt von 5 weiteren Zahlen und einem Leerzeichen, schreibe den Pfad in eine Logdatei
Meine bisherigen Versuche sind kläglich gescheitert und werden hier nicht zur Schau gestellt die Probleme stellen sich aber so dar:
- Ordner herausfiltern, die mit 2 beginnen, gefolgt von 5 weiteren Zahlen und einem Leerzeichen (GTR 20000 als Vergleich geht leider nicht, da da auch Buchstaben gültig sind)
- Der Rest (außer vielleicht den Pfad in eine Logdatei zu schreiben...)
Zur Verdeutlichung:
Ordner1 besteht aus
234567 Florian Fliege
233445 Heinz Hirsch
215632 Fritzi Fisch
im Unterordner "215632 Fritzi Fisch" ist der Unterordner "Interessant" und darin der Unterordner "273954 Kathi Katze"
Es ist also in diesem Fall folgender Eintrag zu loggen:
Ordner1\215632 Fritzi Fischig\Interessant\273954 Kathi Katze
Kann mir hier jemand beistehen (od. ggf. ein Werkzeug nennen, das diesen Zweck erfüllen könnte?)
kristov
ich habe hier einen Ordner, der aus vielen Unterordnern besteht, nach dem Muster "234567 Florian Fliege", wobei die Zahl immer ein eindeutiger Wert ist. Wie es der Teufel so will, verschwinden manche dieser Unterordner in andere Unterordner und sind dann (vermeintlich) "weg" und der Jammer groß. Mittlerweile haben sich wohl einige solcher Leichen angesammelt. Diese möchte ich aufspüren, und zwar nach diesem Schema:
- Nimm alle Unterordner in diesem Ordner, die mit einer 2 beginnen, gefolgt von 5 weiteren Zahlen und einem Leerzeichen.
- Durchsuche in den Unterordnern, die dieses Kriterium erfüllen, wiederum alle Unterordner:
wenn sich in einem (oder einigen oder allen) dieser Unterordner wieder ein Unterordner befindet, der mit einer 2 beginnt, gefolgt von 5 weiteren Zahlen und einem Leerzeichen, schreibe den Pfad in eine Logdatei
Meine bisherigen Versuche sind kläglich gescheitert und werden hier nicht zur Schau gestellt die Probleme stellen sich aber so dar:
- Ordner herausfiltern, die mit 2 beginnen, gefolgt von 5 weiteren Zahlen und einem Leerzeichen (GTR 20000 als Vergleich geht leider nicht, da da auch Buchstaben gültig sind)
- Der Rest (außer vielleicht den Pfad in eine Logdatei zu schreiben...)
Zur Verdeutlichung:
Ordner1 besteht aus
234567 Florian Fliege
233445 Heinz Hirsch
215632 Fritzi Fisch
im Unterordner "215632 Fritzi Fisch" ist der Unterordner "Interessant" und darin der Unterordner "273954 Kathi Katze"
Es ist also in diesem Fall folgender Eintrag zu loggen:
Ordner1\215632 Fritzi Fischig\Interessant\273954 Kathi Katze
Kann mir hier jemand beistehen (od. ggf. ein Werkzeug nennen, das diesen Zweck erfüllen könnte?)
kristov
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201309
Url: https://administrator.de/contentid/201309
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo kristov!
Vielleicht ja etwas in der Art:
Grüße
bastla
Vielleicht ja etwas in der Art:
@echo off & setlocal
set "Basis=D:\Ordner1"
set "Liste=D:\Pfade.txt"
del "%Liste%" 2>nul
(for /d %%i in ("%Basis%\*") do (
for /f "delims=" %%a in ('dir /s/b/ad "%%i\2????? *" 2^>nul') do (
echo %%~nxa|findstr /brc:"2[0-9][0-9][0-9][0-9][0-9] ">nul && echo %%a
)
))>"%Liste%"
bastla
Hallo kristov!
Eine Steigerung der Geschwindigkeit wird dadurch erreicht, dass die gesamte Schleife in Klammern gesetzt ist und somit die Zieldatei nur einmal (und nicht für jeden gefundenen Pfad) zum Schreiben geöffnet werden muss.
Was übrigens die Umlaute angeht, könntest Du noch ein
am Beginn und
am Ende des Batches versuchen.
Grüße
bastla
?
funktioniert nur, weil danach noch das Leerzeichen angegeben ist (da es ja 1 oder kein Zeichen ersetzt).Eine Steigerung der Geschwindigkeit wird dadurch erreicht, dass die gesamte Schleife in Klammern gesetzt ist und somit die Zieldatei nur einmal (und nicht für jeden gefundenen Pfad) zum Schreiben geöffnet werden muss.
Was übrigens die Umlaute angeht, könntest Du noch ein
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"
chcp 1252 >nul
chcp %CP% >nul
Grüße
bastla