Batch: Dateiname parsen

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

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.

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