Top-Themen

Aktuelle Themen (A bis Z)

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

Dateien nach Erstellungsdatum in ein Unterordner verschieben

Frage Entwicklung Batch & Shell

Mitglied: AD-Mike

AD-Mike (Level 1) - Jetzt verbinden

16.03.2012, aktualisiert 21.03.2012, 2736 Aufrufe, 5 Kommentare

Hallo,

gerne möchte ich Dateien in Unterordner verschieben.
Dazu habe ich einmal eine Batch geschrieben. Als Hilfe habe ich einen Beitrag aus diesem Forum genommen in dem nur ein bestimmtes Datum genutzt wurde. Ich möchte aber alle Dateien aus dem Quellordner nehmen und diese in den entsprechenden Unterordnern verschieben. Diese Unterordner sollen vorher erzeugt werden.
Das habe ich so gelöst:
01.
rem @echo off 
02.
setlocal 
03.
 
04.
 
05.
set "Quelle=J:\Export" 
06.
set "Ziel=J:\Export" 
07.
set "Typ=.pdf" 
08.
 
09.
pushd "%Quelle%" 
10.
 
11.
for /F "tokens=1-3*" %%a in ('dir /a-d /tc *%Typ%^|findstr /i /e "\%Typ%"') do (   
12.
for /F "tokens=1-3 delims=." %%e in (%%a) do ( 
13.
md %Ziel%\%%g 
14.
md %Ziel%\%%g\%%g-%%f 
15.
move %Quelle%\%%d %Ziel%\%%g\%%g-%%f\%%d 
16.
17.
 
18.
19.
popd
Im ersten Test hat der Code prima funktioniert. Ich habe PDF- Dateien erzeugt und er hat diese wegsortiert.
Aber als ich dann ältere Dateien zusammen gesucht habe, wurden die alle in den Unterordner für den aktuellen Monat geschoben.

Mir wurde also in %%a nicht das Erzeugungsdatum der Datei geliefert, sondern nur das aktuelle Tagesdatum. Aber in %%d habe ich schon den korrekten Namen gefunden. Nun weiß ich nicht, warum das %%a und das %%d nicht von der selben Datei ist? hat jemand eine Idee?

[Edit Biber] Codeformatierung. [/Edit]
Mitglied: bastla
16.03.2012 um 15:39 Uhr
Hallo AD-Mike!

Das ließe sich auch mit nur einer Schleife der Art
for /f "tokens=1-5* delims=. " %%a in ('dir /a-d /-c /tc *%Typ%^|findstr /i /e "\%Typ%"') do (
abhandeln - dann würden auch die fehlenden Anführungszeichen um %%a herum sich nicht auswirken ...

Das erste "md" ist unnötig - im Pfad benötigte Ordner (in Deinem Fall %%g) werden automatisch erzeugt ...

Ach ja - bei "move" genügt es, als Ziel den Ordnernamen anzugeben, und wenn Du vorher ohnehin schon den Quellordner zum aktuellen Ordner gemacht hast, kannst Du bei der Quelle die Ordnerangabe gleich weglassen.

Grüße
bastla

P.S.: Wenn Du "Code-Formatierung" verwendet hättest (lässt sich aber ja noch nachholen), wäre das Ganze leichter lesbar ...
Bitte warten ..
Mitglied: AD-Mike
21.03.2012 um 10:36 Uhr
Hallo Bastia,
vielen Dank für diese heißen Tips.

Leider haut es trotsdem nicht hin.
Ob es mein Code ist mit den korrigierten Anführungszeichen oder Deine Schleife. Dort habe ich auch die Buchstaben entsprechend angepasst.
Er sortiert immer alles in das heuitige Datum.
Vielleicht sollte man den Code nicht verkürzen, sondern aufsplitten und ein paar Kontrollausgaben tätigen...
Bitte warten ..
Mitglied: bastla
21.03.2012 um 11:04 Uhr
Hallo AD-Mike!
ein paar Kontrollausgaben tätigen...
Du hast doch ohnehin kein "echo off" aktiv - damit solltest Du ja den Ablauf nachvollziehen können. Noch besser geht das, wenn Du den Batch (unter der Annahme, dass er "Verschieben.cmd" hieße) etwa so startest:
Verschieben.cmd >Verschieben.txt 2>&1
- dadurch werden alle Bilschirmausgaben (auch Fehlermeldungen) in die Datei "Verschieben.txt" geschrieben ...

Grüße
bastla
Bitte warten ..
Mitglied: AD-Mike
27.03.2012 um 15:26 Uhr
Hallo bastla,

vielen Dank für die Info, das wußte ich zwar schon, aber in einer Textdatei liest es sich wirklich besser. Hast recht.

Den Fehler habe ich jetzt auch gefunden.
Es ist der Parameter "/tc" hinter dem Befehl dir.
Von der Frage hier im Vorum, wo ich Teile der Schleife her habe, hattest du diese einmal so erklärt:

"Hier sollen zunächst die passenden "dir"-Zeilen ermittelt werden (durch "/a-d" werden sicherheitshalber Ordner von der Anzeige ausgeschlossen, "/tc" legt fest, dass Datum und Uhrzeit der Erstellung verwendet werden sollen)."

Nur leider bewirkt das an meinem PC (Server), dass alle Dateien das heutige Datum bekommen und nicht mehr ihr Erstellungsdatum behalten.

Interessant ist auch noch, dass nur Dateien verschoben werden, die keine Leerzeichen im Namen haben. Aber das habe ich mit einigen Anführungszeichen hinbekommen.

Was allerdings FÜR die Geschachtelte Variante spricht, ist dass er die Dateien, die größer sind als 999.999 sonst nicht mit kopiert.

Also bleibe ich doch lieber bei meiner Variante und
- lösche das "tc" hinter dir
- setze das "%%d" im move- Befehl in Anführungszeichen.
Bitte warten ..
Mitglied: bastla
27.03.2012 um 16:21 Uhr
Hallo AD-Mike!
Interessant ist auch noch, dass nur Dateien verschoben werden, die keine Leerzeichen im Namen haben. Aber das habe ich mit einigen Anführungszeichen hinbekommen.
2 sollten schon gereicht haben (in meinem Ansatz für "%%f") ...
Das geschilderte Verhalten hinsichtlich "/tc" klingt abenteuerlich ...
Bezüglich
Dateien, die größer sind als 999.999 sonst nicht mit kopiert.
ist Dir vermutlich der Schalter "/-c" entgangen - dadurch werden nämlich bei der Angabe der Größe in Bytes keine Tausendertrennzeichen (also Punkte, und die dienen ja als Delimiter) angezeigt ...
Also bleibe ich doch lieber bei meiner Variante
Mach nur ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Datei nach Erstellungsdatum verschieben
Frage von Kugelschreiber1Batch & Shell2 Kommentare

Hallo, ich möchte über eine Batch-Datei Dateien, die älter als 20 Tage sind, in einen anderen Ordner verschieben. Dabei ...

Batch & Shell
Batch Datei zum verschieben von Dateien aus Unterordnern ?
gelöst Frage von Ghostrider1911Batch & Shell10 Kommentare

Hallo, ich bräuchte eine Batch Datei die Dateien aus Unterordnern verschiebt. Also ich habe folgende Verzeichniss Struktur: Z:\Dateien\Ordner1\M1\ Z:\Dateien\Ordnärx\M1\ ...

Batch & Shell
Datein nach Erstellungsdatum in Unterornder verschieben
gelöst Frage von xyxy-yxBatch & Shell20 Kommentare

Hallo, ich möchte alle Dateien nach Erstellungsdatum in datumbenannte Unterordner kopieren und eventuell diesen auch erstellen, wenn er nicht ...

VB for Applications
VBS oder Batch um eine Datei in Unterordner zu verschieben
Frage von MrRoyalVB for Applications1 Kommentar

Hallo zusammen, ich bin neu hier und kenne mich leider im Bereich VBS und Batch nicht so gut aus. ...

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 16 StundenMicrosoft Office6 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 18 StundenDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 19 StundenSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 22 StundenMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...

Server-Hardware
Veeam Backup Server stürzt alle paar Tage ab
Frage von Leo-leServer-Hardware12 Kommentare

Hallo Forum, ich habe momentan folgendes Problem. Veeam Backup and Replication 9.5 u2 auf voll gepatchten DL 380 G7 ...

Windows 10
Windows10-Schnellzugriff per Kommandozeile bearbeiten
Frage von SarekHLWindows 1010 Kommentare

Hallo zusammen, weiß jemand, wie ich per Kommandozeile (in einem Logon-Script) den persönlichen Dokumentenordner aus dem Schnellzugriff entferne den ...

Batch & Shell
Dateien verschieben mit batch
gelöst Frage von michi-ffmBatch & Shell10 Kommentare

Hallo Zusammen hat jemand evtl eine Idee? Zunächst hier das Skript: Leider werden keine UNC-Pfade unterstüzt, kann mir jemand ...