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

Batch Datei Tag der Woche und 6 Tage davor für Variable

Frage Entwicklung Batch & Shell

Mitglied: Grobmotoriker

Grobmotoriker (Level 1) - Jetzt verbinden

31.07.2013 um 20:42 Uhr, 1988 Aufrufe, 12 Kommentare, 1 Danke

Nach einiger Suche kann ich nun mit dem im Netz gefundenen Batch Teilprogramm endlich 7 Ordner erstellen und in diese meine Dateien sichern. Nun würde ich ja gerne die ältesten Daten wieder löschen, was mir aber auch die meisten Probleme bereitet. Den DayofWeek Teil find ich ja so gut das ich ihn hier nochmals poste:

:: Wochentagsnummer und umwandlung in Tagesangaben
set daysofweek=Montag,Dienstag,Mittwoch,Donnerstag,Freitbag,Samstag,Sonntag
for /F "skip=2 tokens=2-4 delims=," %%A in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set daynumber=%%A
for /F "tokens=%daynumber% delims=," %%B in ("%daysofweek%") do set day=%%B
echo Guten Morgen! Heute ist:
echo %day% der %date%
mkdir %daynumber% 2>nul
cd %daynumber%

Start meiner Sicherung (Die Wochentagsausgabe benutze ich bloß um vom Script mit dem richtigem Tag begrüßt zu werden)

Mein Problem nach 4 Wochen: Mein Dropboxordner in dem ich die Sicherung vornehme wird zu voll und ich muß händisch wieder löschen.
Ich hätte also gerne eine weitere Variable die jeweils 6 Tage "älter" ist. Also Bei Tag 1 (Montag) den Tag 7 als Löschvariable
Da ich Samstags nur manchmal und Sonntags selten den Rechner benutze, also auch nicht gesichert wird, müßte ich diese beiden Tage gesondert behandeln, Da mir ansonsten der Sonntag und Montag irgendwann mal übergeht. Ich komme also auf ein Maximum von Sicherungen der letzten 4 oder 5 Tage, und das reicht auch völlig.

Da ich leider nur begrenztes Batch-Wissen habe, stehe ich hier vollkommen an.

Bitte um eure Mithilfe

Mitglied: bastla
31.07.2013 um 21:05 Uhr
Hallo Grobmotoriker und willkommen im Forum!

So richtig klar ist mir zwar nicht, was Du genau mit "Löschvariable" meinst, aber "rotierend" um jeweils 6 Tage weiter zu gehen sollte sich etwa so machen lassen:
01.
set /a Loesch=daynumber + 6 
02.
if %Loesch% gtr 7 set /a Loesch-=7
Grüße
bastla
Bitte warten ..
Mitglied: Biber
31.07.2013, aktualisiert um 22:58 Uhr
Moin bastla,

ich glaube eher, er meint "wenn heute Mittwoch (=Wochentag 3 und Name des Backupordners auch 3 ) ist , dann kann ich den Sicherungsordner von vor 6 Tagen = letzten Donnerstag = Wochentag 4 löschen (wenn es den gibt)".

Das wäre auf bätschisch vom CMD-Prompt aber dann eher:
01.
set /a loesch=daynumber % 7 +1  
Oder in Worten tagDerWoche modulo 7 plus 1.

also kann er noch die beiden Zeilen an seinen Batch vor der mkdir-Zeile einfügen
01.
set /a loesch=daynumber %% 7 +1   
02.
if exist %loesch% rd %loesch% /s /q 
03.
REM -oder- rd %loesch% /s /q 2>nul 
04.
 
05.
Rem und dann wie oben.. 
06.
mkdir %daynumber% 2>nul 
07.
...
Grüße
Biber
Bitte warten ..
Mitglied: Endoro
01.08.2013 um 00:10 Uhr
Hallo,
wie wärs mit forfiles:
01.
forfiles /p "start path" /m * /d -7 /c "cmd /c echo del @file"
lg.
Bitte warten ..
Mitglied: Grobmotoriker
03.08.2013 um 13:09 Uhr
forfiles??? muß ich mal testen.
Bitte warten ..
Mitglied: Grobmotoriker
03.08.2013, aktualisiert um 13:23 Uhr
Beitrag von "Biber"

Genau so hab ichs gemeint. wenn Heute Samstag ist, soll der Sonntag gelöscht werden, wenn heute Freitag dann der Samstag usw.
Einziges Problem, am Sonntag wird das Probgramm fast nie ausgeführt, also auch der Montag nicht gelöscht.

Ich dachte ja ich könnt das so ähnlich lösen, wie auch die Wochentage in meiner Ursprünglich benutzten batch in der for-Schleife einfach reingeschrieben werden. Ich brings aber nicht zusammen! (Da bin ich ein anscheinend ein Holzkopf)

Ich dachts circa so:

set loesch=2,3,4,5,1,1,1
for /F "skip=2 tokens=2-4 delims=," %%C in ('WMIC Path Win32_LocalTime Get DayOfWeek /Format:csv') do set loesch=%%C
for /F "tokens=%loesch% delims=," %%D in ("%daysofweek%") do set day=%%D
echo Es kann nun der Ordner %loesch% gelöscht werden
del %loesch%

Ich bin nur zu blöd um zu wissen ob das so funktionieren kann!
lg
Bitte warten ..
Mitglied: Grobmotoriker
03.08.2013, aktualisiert um 13:22 Uhr
Beitrag von "bastla"

eher meinte ich
set /a Loesch=daynumber+1

Was macht deine zweite Zeile eigentlich???
Ich käme ja dann am Sonntag auf die Variable 8 mit der ich nix anfange! Dafür würd ich nie 1 in der Variable stehen haben oder sehe ich das falsch?
Bitte warten ..
Mitglied: bastla
03.08.2013, aktualisiert um 13:29 Uhr
Hallo Grobmotoriker!
eher meinte ich
Ließ sich aus
Also Bei Tag 1 (Montag) den Tag 7 als Löschvariable
nicht so ganz klar ableiten ...
Dafür würd ich nie 1 in der Variable stehen haben oder sehe ich das falsch?
Ja - hätte Dein Test ja eigentlich zeigen sollen ...

Grüße
bastla
Bitte warten ..
Mitglied: Grobmotoriker
03.08.2013 um 13:29 Uhr
Zitat von Endoro:
Hallo,
wie wärs mit forfiles:
01.
forfiles /p "start path" /m * /d -7 /c "cmd /c echo del @file"
lg.

Habs mal gecheckt. Kannte ich gar nicht. kann ich den Befehl so benutzen, daß alles in einem Verzeichnissbaum, was älter als sagen wir 10 Tage ist zu löschen?????
Das wär ja relativ einfach und genial!

(Ich will solche Befehle nicht gleich "live" testen, da mir ansonsten WIEDER alle Daten abhanden kommen könnten. Entschuldigt also bitte meine vorsicht)
Bitte warten ..
Mitglied: Grobmotoriker
03.08.2013 um 13:32 Uhr
Zitat von bastla:
Hallo Grobmotoriker!
> eher meinte ich
Ließ sich aus
> Also Bei Tag 1 (Montag) den Tag 7 als Löschvariable
nicht so ganz klar ableiten ...
> Dafür würd ich nie 1 in der Variable stehen haben oder sehe ich das falsch?
Ja - hätte Dein Test ja eigentlich zeigen sollen ...

Grüße
bastla

Sorry für meine Vorsicht. Ich will nicht alles gleich "live" testen, nur um zu sehen, ob dann zuviel gelöscht wird.
Kannst du mir verraten was es mit "gtr" auf sich hat?
Bitte warten ..
Mitglied: bastla
03.08.2013 um 13:37 Uhr
Hallo Grobmotoriker!

Gegen Vorsicht ist ja auch nix einzuwenden, aber ein einfaches
echo %Loesch%
würde ja auch schon genügen, um das Ergebnis prüfen zu können ...
Kannst du mir verraten was es mit "gtr" auf sich hat?
if /?
Anstelle von "forfiles" böte sich übrigens auch DelAge32 an ...

Grüße
bastla
Bitte warten ..
Mitglied: Grobmotoriker
03.08.2013 um 13:42 Uhr
Zitat von bastla:
Hallo Grobmotoriker!

Gegen Vorsicht ist ja auch nix einzuwenden, aber ein einfaches
echo %Loesch% 
> 
würde ja auch schon genügen, um das Ergebnis prüfen zu können ...
> Kannst du mir verraten was es mit "gtr" auf sich hat?
if /? 
> 
Anstelle von "forfiles" böte sich übrigens auch DelAge32 an ...

Grüße
bastla

Ich glaub jetzt hab ichs gecheckt! Größer als 7 wird wieder 7.
Ich gestehe die für mich möglicherweise beste Lösung ist der forfiles Befehl gewesen. Aber ich Danke dir auch für den Tipp mit DelAge32.
Bitte warten ..
Mitglied: bastla
03.08.2013 um 13:46 Uhr
Hallo Grobmotoriker!
Ich glaub jetzt hab ichs gecheckt! Größer als 7 wird wieder 7.
Nö - es wird um 7 weniger, sodass wie gewünscht aus 8 dann 1 würde.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

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

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...