Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateinamen per Batch auseinandernehmen und in Variablen schreiben

Frage Entwicklung Batch & Shell

Mitglied: BWeber1988

BWeber1988 (Level 1) - Jetzt verbinden

11.02.2013, aktualisiert 15:19 Uhr, 1645 Aufrufe, 2 Kommentare

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
Mitglied: bastla
11.02.2013, aktualisiert um 16:01 Uhr
Hallo BWeber1988 und willkommen im Forum!

Das ginge (ungetestet) etwa so:
01.
@echo off & setlocal 
02.
set "Quelle=C:\theTIFs\*_*_*.tif" 
03.
set "Ziel=C:\" 
04.
 
05.
for %%i in ("%Quelle%") do ( 
06.
    for /f "tokens=1-3 delims=_" %%a in ("%%~ni") do ( 
07.
        md "%Ziel%\%%a\%%b" 2>nul 
08.
        echo move "%%i" "%Ziel%%%a\%%b\%%c%%~xi" 
09.
10.
11.
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
Bitte warten ..
Mitglied: BWeber1988
11.02.2013 um 16:11 Uhr
Moin,

ich hab's ausprobiert und es geht wunderbar!
Vielen Dank!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen (5)

Frage von dh0815 zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable per Batch auslesen und in Registry schreiben (3)

Frage von Zendara zum Thema Batch & Shell ...

Sonstige Systeme
Batch Dateinamen zerlegen (5)

Frage von Mummel zum Thema Sonstige Systeme ...

Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (27)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Microsoft Office
Office Druck fehler (12)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Festplatten, SSD, Raid
Uninitialisierte Festplatte - Daten retten (11)

Frage von peterla zum Thema Festplatten, SSD, Raid ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...