Batch: Dateiname parsen

Von: , Frage gestellt am So, 3. Sep 2006

Hallo

Ich schreibe gerade an einer batch-Datei. Am Ende will ich alle Dateien kopieren, die den Dateinamen der Form Z_xxxxA, Z_xxxxN oder Z_xxxxÄ haben, aber nicht Z_xxxxB. Die xxxx stehen für vier Ziffern.

Wie kann ich das machen?

Ein Auszug:
for /F "delims==" %%j in ('dir "%%i\Z_*" /b /s /a-d') do (
echo 3=%%j
)

Das liefert mir schon mal alle Dateien, die mit Z_ anfangen. Schon mal nicht schlecht.

Weiter möchte ich die zu kopierenden Dateien anhand des xxxx in Verzeichnisse sortieren. Und zwar jeweils 25 Dateien in einen Ordner. Ein Beispiel:

Z_1234N -> 1225
Z_1251A -> 1250

Wie kann ich denn auf einzelne Stellen im String zugreifen? Ich meine ein s > 0000 and s < 9999 wäre schon mal gut. Kann ich reguläre Ausdrücke in batch Dateien anwenden? Beispielsweise Z_????[A|N|Ä]. Ich habe nichts darüber gefunden.

Grüße Chris

2 Antworten zu dieser Frage

  1. Antwort von nach einem Tag 1 hilfreich
    Re: Batch: Dateiname parsen

    Hallo. Wie kann ich denn auf einzelne Stellen im String zugreifen?
    Als Beispiel, entsprechend in die for-Schleife einbauen:

    set asdf=Z_0000A
    set ende=%asdf:~6,1%
    

    Danach steht in ende das 7. Zeichen aus asdf drin. Die 6 gibt die Zeichennummer an (ab 0 gezählt), die 1 die Anzahl der Zeichen. Weiter möchte ich die zu kopierenden Dateien anhand des xxxx
    in Verzeichnisse sortieren. Und zwar jeweils 25 Dateien in
    einen Ordner. Ein Beispiel:

    Z_1234N -> 1225
    Z_1251A -> 1250
    set asdf=Z_0000A
    set zahl=%asdf:2,4%
    set /a ziel=zahl-zahl%25
    

    Erklärung:
    zahl enthält die 4 Ziffern aus asdf. Mit set /a wird dann gerechnet und zwar wird von zahl der Rest der Division von 25 abgezogen. Damit wäre dann 0000..0024 -> 0, 0025..0049 -> 1 usw.
    Wenn zahl Buchstaben enthält, weil z.B. eine Datei Z_0ASDF hieß, dann wird beim Rechnen nur alles bis zum ersten Buchstaben berücksichtigt. Da müsstest du also vorher irgendwie drauf achten. Wie genau man das berücksichtigen kann, weiß ich momentan auch nicht.

    Sebastian.

    • Antwort von nach 2 Tagen 0 hilfreich
      Re^2: Batch: Dateiname parsen

      Hallo Sebastian!
      Danke! Genau was ich gesucht hatte!
      Chris

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!