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, 3616 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

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

Frage von tocksick zum Thema Batch & Shell ...

VB for Applications
gelöst Mehrere CSV Dateien aus verschiedenen Ordner einlesen via VBA (12)

Frage von mtufangil zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...