Batch: Suche Ordner, der dem Suchordner am nähesten kommt
Hallo.
Ich komme mit einer Batch nicht weiter.
Ich suche einen vorhandenen Ordner, der so ähnlich klingt wie ein Suchordner.
Ich habe also eine Variable, in der ein Teil eines Ordnernamens gespeichert wird. Ich möchte nun, dass mir die Batch den real existierenden Ordnernamen ausgibt, der dem Suchordner am ehesten entspricht.
Konkret geht es darum, dass ich viele Fotos in der Regel nach dem Muster JJJJMMTT_Zähler.jpg benannt habe. Diese Fotos sind in der Regel in einem Ordner, der ebenfalls aus dem Datum rückwärts besteht.
Also z.B.
C:\fotos\2006\20061214\
und darin sind dann Dateien wie
20061214_01.jpg
20061214_02.jpg ...
Ich habe aber einen weiteren Ordner, in dem Fotos liegen, die zwar vom Dateinamen her wie der Ordnername benannt sind, aber manche Ordner können inzwischen umbenannt sein.
Beispiel:
Die Datei heißt 20061214_01.jpg
der Ordner heißt aber inzwischen 2006\20061214XXX
Ich möchte jetzt per Batch überprüfen, in welchem Ordner die Datei liegt.
Dazu übergebe ich den Dateinamen an die Batch. Ist Ordername und Dateiname eindeutig vom Datum her, klappt das auch schon, und das Fotoprogramm (ThumbsPlus) öffnet mit den Ordner und setzt sogar den Focus auf die Datei aus dem Suchordner.
Doch wenn Ordername und Dateiname nicht eindeutig übereinstimmen, komme ich nicht weiter.
Habe versucht
und auch andere Wildcards getestet, aber es wird mir gar kein Ordner angezeigt. Was mache ich falsch?
Danke
Ich komme mit einer Batch nicht weiter.
Ich suche einen vorhandenen Ordner, der so ähnlich klingt wie ein Suchordner.
Ich habe also eine Variable, in der ein Teil eines Ordnernamens gespeichert wird. Ich möchte nun, dass mir die Batch den real existierenden Ordnernamen ausgibt, der dem Suchordner am ehesten entspricht.
Konkret geht es darum, dass ich viele Fotos in der Regel nach dem Muster JJJJMMTT_Zähler.jpg benannt habe. Diese Fotos sind in der Regel in einem Ordner, der ebenfalls aus dem Datum rückwärts besteht.
Also z.B.
C:\fotos\2006\20061214\
und darin sind dann Dateien wie
20061214_01.jpg
20061214_02.jpg ...
Ich habe aber einen weiteren Ordner, in dem Fotos liegen, die zwar vom Dateinamen her wie der Ordnername benannt sind, aber manche Ordner können inzwischen umbenannt sein.
Beispiel:
Die Datei heißt 20061214_01.jpg
der Ordner heißt aber inzwischen 2006\20061214XXX
Ich möchte jetzt per Batch überprüfen, in welchem Ordner die Datei liegt.
Dazu übergebe ich den Dateinamen an die Batch. Ist Ordername und Dateiname eindeutig vom Datum her, klappt das auch schon, und das Fotoprogramm (ThumbsPlus) öffnet mit den Ordner und setzt sogar den Focus auf die Datei aus dem Suchordner.
Doch wenn Ordername und Dateiname nicht eindeutig übereinstimmen, komme ich nicht weiter.
Habe versucht
Dir /s /b /ad %suchdir% | findstr /e /i "\%strjahr%%strmonat%%strtag%*"
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 366296
Url: https://administrator.de/forum/batch-suche-ordner-der-dem-suchordner-am-naehesten-kommt-366296.html
Ausgedruckt am: 07.04.2025 um 19:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo webazubi,
die Syntax für Suchmuster in
Suchmuster in
Grüße
Friemler
die Syntax für Suchmuster in
FINDSTR
unterscheidet sich von den "normalen" Dateimasken, wie man sie z.B. vom DIR
-Befehl her kennt. Wie immer hilft natürlich FINDSTR /?
als erstes weiter...Suchmuster in
FINDSTR
sind eine sehr rudimentäre Version von regulären Ausdrücken. Was Du wahrscheinlich benötigst ist folgendes:findstr /ie "\%strjahr%%strmonat%%strtag%.*"
Grüße
Friemler
Hallo,
Solange du deinen Namen noch kennst
Da das suchen in (DOS ?) oder in Batchdatei doch länger dauert, vielleicht ein Suchwerkzeug nutzen welches ein weinig schneller ist und dir evtl. auch möglichkeiten beim Dateiöffnen bietet. http://www.voidtools.com/ oder etwas langsamer beim Suchen aber dafür mit anderen Optionen https://www.mythicsoft.com/agentransack/ (oder File Locator Lite)
Gruß,
Peter
Solange du deinen Namen noch kennst
Da das suchen in (DOS ?) oder in Batchdatei doch länger dauert, vielleicht ein Suchwerkzeug nutzen welches ein weinig schneller ist und dir evtl. auch möglichkeiten beim Dateiöffnen bietet. http://www.voidtools.com/ oder etwas langsamer beim Suchen aber dafür mit anderen Optionen https://www.mythicsoft.com/agentransack/ (oder File Locator Lite)
Gruß,
Peter
nö!
Hallo,
gibt dir den Backslash am ende
sollte da näher kommen.
Du solltest dich mal mit Findstr mit Regulären Ausdrücken (Regular Expressions RegEx) befassen (dürftig).
https://www.windows-commandline.com/findstr-command-examples-regular/
https://stackoverflow.com/questions/2613826/regular-expressions-in-finds ...
https://stackoverflow.com/questions/13028228/regular-expression-with-fin ...
Gruß,
Peter
Zitat von @webazubi:
Den Backslash hatte ich schon versucht an 2016 ranzuhängen, ging aber auch nicht.
Den Backslash hatte ich schon versucht an 2016 ranzuhängen, ging aber auch nicht.
set SUCHJAHR="C:\Fotos\%strjahr%\"
Ich hätte jetzt erwartet, dass mit das gesuchte Verzeichnis ausgegeben wird.
Das Verzeichniss nicht aber dessen Inhalt sofern da etwas was dein Suchbegriff entspricht gefunden wird. Ein "%strjahr%%strmonat%%strtag%.*" sucht nach genau diesen Inhalt, und der existiert nicht. Ein Dir /s /b /ad %SUCHJAHR% | findstr /ie "%strjahr%%strmonat%%strtag%*.*"
Oder müsste ich das erst in einer Variablen speichern?
Nö, aber wenn du es möchtest.Du solltest dich mal mit Findstr mit Regulären Ausdrücken (Regular Expressions RegEx) befassen (dürftig).
https://www.windows-commandline.com/findstr-command-examples-regular/
https://stackoverflow.com/questions/2613826/regular-expressions-in-finds ...
https://stackoverflow.com/questions/13028228/regular-expression-with-fin ...
Gruß,
Peter