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

Dateien als Generationsdatei sichern und überschreiben

Frage Entwicklung Batch & Shell

Mitglied: 70067

70067 (Level 1)

24.09.2008, aktualisiert 25.09.2008, 4184 Aufrufe, 4 Kommentare

Hallo

ich suche eine Lösung die es mir erlaubt Dateien als Generationen zu sichern und zu überschreiben.

Täglich kriege ich eine Datei aus einem Fremdsystem via FTP auf unseren Server gestellt. Diese Datei möchten wir als Generationen-Datei für ca. 20 Tage sichern. Die Lösung brauchen wir für ca. 2 jahre bis alle Standorte uuf das neue System umgestellt sind.

Meine Überlegung ist dass ich eine Datei in der Form "original.txt" als "original.A01" sichere. Am Folgetag würde dann die Datei "original.A02" erstellt. das geht bis die Generation "original.A20" erstellt worden ist. Ab diesem Zeitpunkt soll ab der ersten Generation "original.A01" überschrieben werden.

Im Forum habe ich einen Weg gefunden zu ermitteln welches die älteste Datei ist die ich überschreiben kann. Das nützt mir aber nur etwas wenn mal alle Generationen erstell worden sind. Vorher muss ich das über das Skript lösen können oder ich müsste 20 leere Dateien "original.A01" bis "original.A20" anlegen was aber nicht die saubere Art wäre.

Es ist nicht zwingend dass als Endung "A01" steht. Die Nummerierung kann auch im Dateinamen hinterlegt werden. Wenn möglich sollte die Generationenzahl als Variable hinterlegt werden um allfällige Anpassungen ohne grösseren Aufwand vornehmen zu können.


Ermitteln der ältesten Generation mit:

for /f %%i in ('dir /b /o-d "D:\daten\Temp\Dosversuch\exostopp.A*"') do @set Alte=%%i

entsprechend kann ich dann auch kopieren.

copy "D:\daten\Temp\Dosversuch\exostopp.txt" "D:\daten\Temp\Dosversuch\%Alte%"


Vielen Dank für Eure Mithilfe

Stefan
Mitglied: 60730
24.09.2008 um 19:08 Uhr
Servus,

wie wäre folgender Ansatz:

nicht a01-a20 zu benutzen, sondern das Datum an sich?

01.
:variablen setzen 
02.
set "Jahr=%date:~-4%" 
03.
set "Monat=%date:~-7,2%" 
04.
set /a vormonat=%monat%-1 
05.
set "Tag=%date:~-10,2%" 
06.
:bewegen 
07.
move ftpdatei.xyz %Jahr%-%Monat%%Tag%ftpdatei 
08.
:löschen 
09.
del /q Jahr%-%vormonat%%Tag%ftpdatei
"so" sollte die Datei umbenannt werden und die Datei, die einen Monat "älter" ist - gelöscht werden.

Probleme sehe ich dann natürlich bei den Monaten mit 31 Tagen und den folgenden - mit 30 Tagen - da würde die "31er" nie gelöscht werden...

Oder du nimmst den Monat -2 und löscht alles das so heißt
01.
set /a vormonat=%monat%-2
- dann hast du am 1. nicht das Problem, daß die vom 30. (die dann erst einen Tag alt sind) auch in die "Tonne" getreten werden.
Hälst die Daten aber 60 Tage vor..
..oder Du nimmst zusätzlich 7zip und packst die Datei (wenn ungepackt - keine mp3/jpg)

oder du wartest evtl. auf jemanden, der was ganz anderes in Petto hat

Gruß
Bitte warten ..
Mitglied: Biber
24.09.2008 um 21:04 Uhr
Moin reinis,

der geringste Anpassungsaufwand an Deine vorhandene Skizze wäre wahrscheinlich wie folgt:
  • zur Wartbarkeit: den Zielordner in eine Variable %ziel%
  • dito: eine Variable %pool% mit den 20 oder 50 Suffixen (wie immer die aussehen sollen)
  • vor Deine bereits vorhandene Ermittlung der ältesten vorhandenen noch eine Prüfung auf weniger als 20 Dateien vorhanden
  • (optional) Falls (warum auch immer) MEHR als 20 Dateien vorhanden sein sollten, dann alle bis auf auf die 20 "jüngsten" löschen.

01.
@echo off & setlocal 
02.
Set "Ziel=D:\daten\Temp\Dosversuch\exostopp.A*" 
03.
Set "pool=01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20" 
04.
REM erstmal der Fall weniger als 20 Generationen vorhanden 
05.
for %%i in (%pool%) do ( 
06.
         if not defined freefile ( 
07.
             if not exist "%ziel%\exostopp_A%%i.txt" set "freefile=%ziel%%%i.txt" 
08.
)) 
09.
REM jetzt Deine bisherige FOR-Anweisung...  
10.
REM aber nur, wenn alle %pool%-Dateien da sind 
11.
if not defined freefile ( 
12.
   for /f %%i in ('dir /b /o-d "%ziel%*"') do set freefile=%%i 
13.
14.
copy "D:\daten\Temp\Dosversuch\exostopp.txt" %freefile%
[Schmucklose, wartbare und ungetestete Skizze]

Zu dem optionalen Fall "bereits mehr als 20 Generation vorhanden" verweise ich auf die Forumssuche.
Stichwort " älteste x Dateien löschen" oder ähnlich.

Natürlich gehört auch die %quelle% in eine variable und die %pool%-Variable könnte in einer FOR/L-Anweisung gefüllt werden....

Aber ich wollte hier nur eine mögliche Mimik zeigen.

Grüße
Biber
Bitte warten ..
Mitglied: 70067
25.09.2008 um 08:48 Uhr
Hallo Timo

Danke für deine Antwort. Der Ansatz ist gut aber ich möchte doch lieber unabhängig vom Datum bleiben da hab ich dann auch kein Problem mit den Anzahl Tagen eines Monats.

Trotzdem vielen Dank für deine rasche Antwort.

Gruss
Stefan
Bitte warten ..
Mitglied: 70067
25.09.2008 um 09:00 Uhr
Hallo Biber

genau dass ist es was ich suchte. Ich habe das ganze bei mir eingebaut und getestet und es funktioniert. Besten Dank für Deine rasche Hilfe.

Gruss
Stefan

Hier noch die getestete Version

@echo off & setlocal
Set "Ziel=D:\daten\Temp\Dosversuch\"
Set "pool=01 02 03 04 05 06 07 08 09 10"
REM erstmal der Fall weniger als 10 Generationen vorhanden
for %%i in (%pool%) do (
if not defined freefile (
if not exist "%ziel%\exostopp_A%%i.txt" set "freefile=%ziel%\exostopp_A%%i.txt"
))
REM jetzt Deine bisherige FOR-Anweisung... aber nur, wenn all 5pool%-dateien da sind
if not defined freefile (
for /f %%i in ('dir /b /o-d "%ziel%\exostopp_A*.txt"') do set freefile=%%i
)
copy "D:\daten\Temp\Dosversuch\exostopp.txt" %freefile%
Bitte warten ..
Ähnliche Inhalte
Backup
gelöst Mitarbeiter Dateien sichern (6)

Frage von FishermansFriend zum Thema Backup ...

Batch & Shell
Nach Muster von Dateien, diese hochzählen (3)

Frage von Erik72 zum Thema Batch & Shell ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (16)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...