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

Rekursives kopieren und umbenennen von Dateien in neu anzulegenden Ordner

Frage Entwicklung Batch & Shell

Mitglied: net-agent

net-agent (Level 1) - Jetzt verbinden

30.01.2012 um 13:35 Uhr, 3620 Aufrufe, 3 Kommentare

Problem: Datensicherung eines Unix-Mailservers im mdir-Format unter Windows einlesen.

Hallo Leute, ich hoffe ihr könnt mir helfen.

Zur Situation: Ich habe hier eine Ordnerstruktur, die den Mailverkehr eines Unix-Mailservers beinhaltet. Die Daten wurden exportiert und sehen etwa wie folgt aus

Für jeden benutzer gibt es ein Accountverzeichnis. Innerhalb dieses Verzeichnisses sind nun mehrere Unterverzeichnisse vorhanden, ähnlich wie
man es auch aus Outlook kennt (Inbox, Archiv etc. Aber auch vom User selbs angelegte Strukturen).

In den Ordnern befinden sich nun die eigentliche E-Mails mit unterschiedlichen Dateinamen und ohne Dateierweiterung.
hängt man an eine solche Maildatei nun eine Erweiterung .eml an, so lässt sich die jeweilige Datei mit Outlook öffnen.
Haken an der Sache ist nun, dass die originale Datei nicht verändert werden darf/soll.


Bisher habe ich es so gemacht, dass ich in jeden Ordner gewechselt bin un dort über Batch folgende Befehle ausgeführt habe:

mkdir \umbenannt
xcopy * \umbenannt\*.eml

Da mir der Rechner zwischenzeitlich abgeschmiert ist, sind teilweise bereits "umbenannt"-Ordner angelegt, teilweise nicht.
Um nicht noch einmal alles erneut von Hand durchgehen zu müssen, suche ich nach einer Batch-Lösung, die folgendes erfüllt:

Aufgabe: Ordnerstrucktur rekursiv durchgehen.
Wenn kein Verzeichnis "umbenannt" besteht, dieses anlegen, die Dateien aus dem jeweiligen Verzeichnis dorthin kopieren und die
Erweiterung .eml anhängen.

Alternative: Gesamte Ordnerstrucktur mit ausnahme der Verzeichnisse "umbenannt" in ein neus Verzeichnis kopieren und dabei die Erweiterung
.eml an jede vorhandene Datei anhängen.

Wäre toll, wenn Ihr mir hierzu eine Lösung anbieten könntet.
Mitglied: bastla
30.01.2012 um 16:52 Uhr
Hallo net-agent und willkommen im Forum!

Das könnte (ungetestet) etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Mail-Ordner" 
03.
set "Neu=umbenannt" 
04.
 
05.
for /d /r "%Ordner%" %%i in (*) do ( 
06.
    if /i "%%~nxi" neq "%Neu%" if not exist "%%i\%Neu%" ( 
07.
        echo md "%%i\%Neu%" 
08.
        echo copy "%%i\*" "%%i\%Neu%\*.eml" 
09.
10.
11.
pause
Wegen der beiden echo in den Zeilen 7 und 8 zeigt der Batch vorerst nur an, was passieren wird, wenn diese echo entfernt werden ...

Grüße
bastla
Bitte warten ..
Mitglied: net-agent
31.01.2012 um 13:45 Uhr
Hallo bastla,

zunächst mal herzlichen Dank für die superschnelle Antwort.

Dein Script funktioniert super. Respekt!

Wenn man weiß wie es gehen sollte ist das Meiste auch nachvollziebar. Allerdings kann ich mit der Variable "%%~nxi" nichts anfangen.

Wäre nett, wenn du das nochmal kurz erläutern könntest.

Ich werde die Frage trotzdem schonmal als gelöst markieren.


Nochmals Danke und beste Grüße...

net-agent
Bitte warten ..
Mitglied: bastla
31.01.2012 um 15:25 Uhr
Hallo net-agent!
Allerdings kann ich mit der Variable "%%~nxi" nichts anfangen.
Ein intensiver Blick in die Online-Hilfe (for /?, ziemlich am Ende) sollte das eigentlich ändern ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(4)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
gelöst Alle Dateien in einem Ordner umbenennen (5)

Frage von l.scheper zum Thema Batch & Shell ...

Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (24)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
Welches OS für Firmengeräte? (17)

Frage von MarkusVH zum Thema Windows 10 ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (13)

Frage von bogi1102 zum Thema Exchange Server ...

DNS
Brauche einen Nameserver (12)

Frage von leon123 zum Thema DNS ...