bweber1988
Goto Top

Dateinamen per Batch auseinandernehmen und in Variablen schreiben

Moin moin,

ich habe folgendes Problem:
In einem Ordner habe ich mehrere hundert .tif-Dateien mit folgendem Bezeichnungssystem:

abcdef_ghi_1234567890.tif
(also varchar(6)_varchar(3)_varchar(8-24).tif

Die Zahl am Ende entsteht aus einem Barcode. Dieser sollte eigentlich unique sein, ist es aber nicht. Daher möchte ich in dem Verzeichnis Unterverzeichnisse in folgendem Stil erstellen:
C:\..\abcdef\ghi\1234567890.tif

Ich hab mir das (pseudocodisiert) folgendermaßen vorgestellt:
- schreibe Dateinamen in Variable %Var0%
- nimm Zeichen 1-6 und schreibe sie in %Var1%
- nimm Zeichen 7-9 und schreibe sie in %Var2%
- nimm Zeichen 11-Ende und schreibe sie in %Var3%
- Erstelle Variable %Directory% mit Zielpfad (C:\..\%Var1%\%Var2%\)
- Erstelle Verzeichnis %Directory%
- Kopiere C:\..\%Var0%.tif nach %Directory%
- Benenne Datei %Var0%.tif um in %Var3%.tif
- Lösche Datei mit Namen %Var0%.tif

Kann man insbesondere die ersten vier Schritte per Batch umsetzen?

VG,

BWeber

Content-Key: 201566

Url: https://administrator.de/contentid/201566

Printed on: April 19, 2024 at 20:04 o'clock

Member: bastla
bastla Feb 11, 2013 updated at 15:01:18 (UTC)
Goto Top
Hallo BWeber1988 und willkommen im Forum!

Das ginge (ungetestet) etwa so:
@echo off & setlocal
set "Quelle=C:\theTIFs\*_*_*.tif"  
set "Ziel=C:\"  

for %%i in ("%Quelle%") do (  
    for /f "tokens=1-3 delims=_" %%a in ("%%~ni") do (  
        md "%Ziel%\%%a\%%b" 2>nul  
        echo move "%%i" "%Ziel%%%a\%%b\%%c%%~xi"  
    )
)
pause
Das Erstellen der Ordner erfolgt in dieser Fassung bereits, das Verschieben der Dateien wird (wegen des "echo" vor dem "ren") zunächst nur simuliert - wenn das "echo" entfernt wird, wird auch verschoben (und eine ev bereits existierende gleichnamige Datei im Zielordner kommentarlos überschrieben).

Falls die Zielordner nicht unmittelbar in "C:\" erstellt werden sollen, den Pfad in Zeile 3 ändern, aber jedenfalls mit einem "\" abschließen!

Grüße
bastla
Member: BWeber1988
BWeber1988 Feb 11, 2013 at 15:11:07 (UTC)
Goto Top
Moin,

ich hab's ausprobiert und es geht wunderbar!
Vielen Dank!