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

Batch - Dateien verschieben, bis auf die von den letzten 3 Tagen

Frage Entwicklung Batch & Shell

Mitglied: matze-pe

matze-pe (Level 1) - Jetzt verbinden

30.11.2007, aktualisiert 03.12.2007, 4152 Aufrufe, 9 Kommentare

Hallo,
ich programmiere einen Batch, der mir alle Dateien (etwa 10 Tage alt ) in ein anderes Verzeichnis verschiebt, es müssen aber die Dateien von den letzten 3 Tagen im Quellverzeichnis erhalten bleiben.

Hier habe ich schonmal was erstellt, der mir alle Dateien in TXT umwandelt und die Dateien verschiebt.


move C:\Sicherung\*.* D:\Sicherung\

ren D:\Sicherung\*.* "*.txt"



Es müssen nur noch die letzten 3 Tage im Ordner erhalten bleiben.




LG
Matze
Mitglied: Bolle97
30.11.2007 um 13:48 Uhr
Hallo,

diese Thematik wurde hier schon des öfteren durchgekaut, suche mal nach "Dateien löschen" bzw. "DelAge32".
Ich würde das Programm "DelAge32" bevorzugen.

Gruß - René
Bitte warten ..
Mitglied: bastla
30.11.2007 um 16:26 Uhr
Hallo matze-pe!

Beiden Empfehlungen von Bolle97 kann ich mich anschließen, vor allem, wenn das nicht hilft:
01.
@echo off & setlocal 
02.
set /a MindestAlter=3 
03.
set "Quelle=C:\Sicherung\*.*" 
04.
set "Ziel=D:\Sicherung" 
05.
 
06.
set "AG=%temp%\Age.vbs" 
07.
echo A=DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Now):WScript.Echo A>"%AG%" 
08.
for %%i in ("%Quelle%") do for /f %%a in ('cscript //nologo "%AG%" "%%i"') do if %%a gtr %MindestAlter% echo move "%%i" "%Ziel%\%%~ni.txt" 
09.
del "%AG%"
Hinweis: Bei der Angabe des Zieles bitte keinen abschließenden "\" verwenden (auch nicht, falls das Ziel ein Rootverzeichnis, zB "E:\" wäre - in diesem Fall nur "E:" schreiben).

Kurze Erklärung zum Ablauf:
Das temporäre VBScript "%temp%\Age.vbs" wird für jede Datei im Quellordner aufgerufen, ermittelt deren heutiges Alter in Tagen und gibt dieses aus.
Die Ausgabe des Scripts wird über eine "for"-Schleife in die Variable "%%a" übernommen, was in weiterer Folge den Vergleich auf das Überschreiten des angegebenen Mindestalters ermöglicht.
Wenn das Mindestalter überschritten wurde, kann das Umbenennen auf "*.txt" vom dann auszuführenden "move"-Befehl gleich mit erledigt werden.

Abschließend noch die bei derartigen Verschiebeaktionen unvermeidliche Warnung: Falls im Zielordner bereits eine gleichnamige Datei vorhanden ist, wird diese kommentarlos überschrieben!

[Edit] Zur Sicherheit habe ich (so wie miniversum unten) auch noch vor das "move" ein "echo gesetzt, damit die Verschiebe-Befehle nur angezeigt werden und erst, wenn Du das "echo" herausnimmst, tatsächlich erfolgen. [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
01.12.2007 um 12:36 Uhr
Hier mal ne Reine Batch Lösung. Zum wirklichen verschieben das ECHO entfernen. Bitte erst Testen!!
01.
@echo off & setlocal enabledelayedexpansion 
02.
Set "Quelle=C:\Sicherung" 
03.
Set "Quellfilter=*.*" 
04.
Set "Ziel=D:\Sicherung" 
05.
Set "Jahrrueck=0" 
06.
Set "Monatrueck=0" 
07.
Set "Tagrueck=3" 
08.
 
09.
 
10.
FOR /F "tokens=1-3 delims=.: " %%A in ('echo %Date%') do ( 
11.
set /a JJJJ=%%C-%Jahrrueck% 
12.
set /a MM=%%B-%Monatrueck% 
13.
set /a TT=%%A-%Tagrueck% 
14.
15.
Set NeusteDatei=%JJJJ%%MM%%TT% 
16.
FOR /R %Quelle% %%F in (%Quellfilter%) do ( 
17.
set "FullFileName=%%~fF" 
18.
FOR /F "tokens=1-3 delims=.: " %%A in ('echo %%~tF') do set FileTime=%%C%%B%%A 
19.
if !FileTime! lss %NeusteDatei% ( 
20.
ECHO move "!FullFileName!" "%Ziel%" 
21.
22.
)
miniversum
Bitte warten ..
Mitglied: bastla
01.12.2007 um 13:00 Uhr
@miniversum

Vielleicht solltest Du noch ergänzen, dass Dateinamen mit "!" in Namen oder Pfad nicht verschoben werden können, weil in der Verarbeitung das "!" weg fällt.

Einer der Gründe, warum ich in diesem Fall lieber VBScript einsetze, wird gerade heute ganz deutlich: Das von Deinem Batch berechnete Vergleichsdatum "Heute - 3 Tage" (%NeusteDatei%) wird mit "200712-2" ermittelt, was sich zwar auch per Batch in den Griff kriegen lässt, aber eben zusätzlichen Aufwand erfordert.
@matze-pe
miniversums's Hinweis hinsichtlich des Testens möchte ich auch nochmals betonen - insbesondere wegen des automatischen Überschreibens im Zielordner! (Zur Sicherheit setze ich bei meinem Entwurf auch noch ein entsprechendes "echo" zum "Entschärfen" vor das "move".)

Grüße
bastla
Bitte warten ..
Mitglied: matze-pe
01.12.2007 um 14:27 Uhr
wunderbar, vielen Dank das funktioniert schon richtig gut.

wo setzte ich denn im skript von miniversum den befehl

ren D:\Sicherung\*.* "*.txt"

zum umbennen der dateien in Textdateien ein?



Vielen Dank

LG
Matze
Bitte warten ..
Mitglied: miniversum
01.12.2007 um 17:09 Uhr
@bastla
Ja stimmt eine Fehlerbehandlung bzw. das Umrechnen beim überschreiten einer Monats-, Wochen- oder Tagengrenze Fehlt hier.
Die Dateinamen mit ! habe ich vergessen zu erwähnen. Sollten welche vorkomme könnte man die Klammer auch durch ein call ersetzen und so das ganze umbauen. Auch bei Dateiennamen mit Umlauten könnte es ja prinzipiell Probleme geben.
Außerdem sollte geprüft werden ob das Datum der Erstellung oder der letzten Änderung verwendet wird, sollte sich das unterscheiden.
Die Batch war auch nur exemplatisch gedacht und als Hinnweis wie es gehen könnte. Ich benutze die Batch ähnlich, nur das ich in meinem Fall den ersten Teil mit dem aktuelles Datum-Anzahl Tage nicht habe. Ich gebe in meiner Verwendung ein absolutes Datum an abdem Alles was älter ist verarbeitet wird. Diese absolute Datumsangabe landet dann direkt in der Variablen %NeusteDatei%. Daher habe ich den Anfangsteil auch zugegebenermaßen auf die schnelle und dadurch etwas vernachlässigt zusammengebastelt. Daher auch der dringende Hinnweis von mit es zu testen vorher!


@matze-pe
Jeder Verarbeitungsschritt der mit diesen Dateien durchgeführt werden soll die älter sind gommt in de Klammer vom If. Also da wo auch die Zeile mit dem move steht.

miniversum
Bitte warten ..
Mitglied: bastla
01.12.2007 um 17:27 Uhr
@miniversum
Hinsichtlich des "!"-Problems hätte ich noch folgende Variante Deiner Schleife ohne "delayedexpansion":
01.
FOR /R %Quelle% %%F in (%Quellfilter%) do ( 
02.
	FOR /F "tokens=1-3 delims=.: " %%A in ('echo %%~tF') do if "%%C%%B%%A" lss "%NeusteDatei%" ( 
03.
		ECHO move "%%F" "%Ziel%\%%~nF.txt" 
04.
05.
)
Damit wird auch gleich das Umbenennen erledigt. Wegen der Umlaute sollte es eigentlich keine Probleme geben.

@matze-pe
Mit der Idee, immer alle (zumeist ohnehin schon mit der Endung ".txt" versehenen) Dateien des Zielordners (nochmals) umzubenennen, kann ich mich nicht anfreunden - eigentlich sollte es genügen, den Typ beim Verschieben mit "move" anzupassen.

Wenn Du dennoch gesteigerten Wert auf das ren D:\Sicherung\*.* "*.txt" legst, dann brauchst Du es aber trotzdem nur einmal, und solltest es daher nach der Schleife in eine zusätzliche Zeile stellen.

Grüße
bastla
Bitte warten ..
Mitglied: matze-pe
03.12.2007 um 15:55 Uhr
ok, vielen Dank.

Ich mache dann einen zusätzlichen Skript, der mir nach dem move die Dateien umbenennt.



LG
Matze
Bitte warten ..
Mitglied: Biber
03.12.2007 um 18:23 Uhr
Moin matze-pe,

Nachfrage:
ok, vielen Dank.

Ich mache dann einen zusätzlichen Skript...

Darf ich das so interpretieren, dass die eigentliche Frage beantwortet ist und
  • einer von uns beiden einen grünen "Gelöst"-Haken setzen könnte und
  • der andere danach diesen Beitrag schließen darf?

Grüße
Biber
[Edit 2.1.2008] Tja, gab keine Antwort. Vielleicht war die Nachfrage zu komplex. Egal, dann schliesse ich den Thread "ohne Status". [/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch die alle Dateien löscht die Älter als 3 Tage sind
gelöst Frage von AzubineBatch & Shell5 Kommentare

Guten Morgen, von unserer Zeiterfassung werden die Sicherungsdateien in einem Ordner abgelegt und mit Veritas auf ein externes Bandlaufwerk ...

Batch & Shell
Dateien verschieben die älter sind wie 1 Tag
gelöst Frage von pblackyBatch & Shell3 Kommentare

Hallo Forum, Ich suche gerade nach einer Lösung via batch in einem Ordner mit Unterverzeichnissen alle Dateien zu verschieben, ...

Batch & Shell
Batch zum suchen und verschieben von Dateien
gelöst Frage von zeroblue2005Batch & Shell5 Kommentare

Guten Tag Zusammen, ich benötige eine Batch, die folgendes kann: 1. Suche in bestimmten Dateipfad nach nach Dateien eines ...

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\ ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 12 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 16 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 16 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 19 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...