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
GELÖST

Ordnerdatum soll - 3 Tage sein

Frage Entwicklung Batch & Shell

Mitglied: matze-pe

matze-pe (Level 1) - Jetzt verbinden

05.02.2008, aktualisiert 07.02.2008, 4303 Aufrufe, 10 Kommentare

Hallo miteinander,
ich habe eine Script der mir alle Dateien bis auf die in den letzen 3 Tagen sichert.

im Script wird ein Ordner angelegt, der das heutige Datum als Ordnernamen nimmt. In dem Ordner befinden sich aber alle Dateien bis auf die in den letzen 3 Tagen.


Wie ändert man im Sckript, dass der Ordnernamen 2008_02_05 (-3 Tage) = 2008_02_02 heißt?



Hier mein Script:

01.
@echo off & setlocal 
02.
 
03.
set jahr=%date:~-4% 
04.
set monat=%date:~-7,2% 
05.
set tag=%date:~-10,2% 
06.
 
07.
 
08.
md D:\Sicherung\bis_%jahr%-%monat%-%tag%\ 
09.
 
10.
 
11.
set /a MindestAlter=3 
12.
set "Quelle=C:\Sicherung\*.*" 
13.
set "Ziel=D:\Sicherung\bis_%jahr%-%monat%-%tag%\" 
14.
 
15.
set "AG=%temp%\Age.vbs" 
16.
echo Sicherung: Fenster wird in wenigen Minuten automatisch geschlossen! 
17.
echo ----------------------------------------------------------------------- 
18.
 
19.
echo A=DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Now):WScript.Echo A>"%AG%" 
20.
for %%i in ("%Quelle%") do for /f %%a in ('cscript //nologo "%AG%" "%%i"') do if %%a gtr %MindestAlter% move "%%i" "%Ziel%\%%~ni%%~xi.txt" 
21.
del "%AG%"


mfg
Matze-Pe


[Edit Biber] Auf <code> formatiert. [/Edit]
Mitglied: bastla
05.02.2008 um 17:05 Uhr
Hallo matze-pe!

Ich hoffe, dass es ist Dir recht ist, wenn das Ordnerdatum nicht mit -3 Tagen, sondern mit -%MindestAlter% Tagen ermittelt wird:
01.
@echo off & setlocal 
02.
set /a MindestAlter=3 
03.
set "Quelle=C:\Sicherung\*.*" 
04.
 
05.
set "GD=%temp%\GetDate.vbs" 
06.
echo D=DateAdd("d",-%MindestAlter%,Now):WScript.Echo Year(D)^&"_"^&Right("0"^&Month(D),2)^&"_"^&Right("0"^&Day(D),2)>"%GD%" 
07.
for /f "tokens=1-3 delims=_" %%i in ('cscript //nologo "%GD%"') do set jahr=%%i&set monat=%%j&set tag=%%k 
08.
del "%GD%" 
09.
 
10.
set "Ziel=D:\Sicherung\bis_%jahr%-%monat%-%tag%\" 
11.
md "%Ziel%" 2>nul 
12.
 
13.
echo Sicherung: Fenster wird in wenigen Minuten automatisch geschlossen! 
14.
echo ----------------------------------------------------------------------- 
15.
 
16.
set "AG=%temp%\Age.vbs" 
17.
echo A=DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments(0)).DateLastModified, Now):WScript.Echo A>"%AG%" 
18.
for %%i in ("%Quelle%") do for /f %%a in ('cscript //nologo "%AG%" "%%i"') do if %%a gtr %MindestAlter% move "%%i" "%Ziel%\%%~ni%%~xi.txt" 
19.
del "%AG%"
Grüße
bastla
Bitte warten ..
Mitglied: Biber
05.02.2008 um 18:14 Uhr
Moin Matze-pe und bastla,

unbedeutender Vorschlag zur Vereinfachung:
Da diese Variablen %tag%, %monat% und %jahr% nun wirklich nicht benötigt werden, sondern nur EINE Variable mit dem "Heute - 3"-Verzeichnisnamen,
ginge es auch etwas schlanker...

01.
....( Ersatzzeilen für alles zwischen [Set "GD=..."] und [md "%Ziel%" 2>nul] inkl. 
02.
set "GD=%temp%\GetDate.vbs" 
03.
echo Wscript.echo dateadd("d", date, -%Mindestalter%) >%GD% 
04.
for /f "tokens=1-3 delims=." %%i in ('cscript //nologo "%GD%"') do set "Ziel=D:\Sicherung\bis_%%k-%%j-%%i" 
05.
del "%GD%" 
06.
 
07.
md "%Ziel%" 2>nul 
08.
 
09.
...
Grüße
Biber
Bitte warten ..
Mitglied: matze-pe
05.02.2008 um 18:17 Uhr
Hallo Bastla,

dein veränderstes Script passt nicht mehr, es kommt die Fehlermeldung:

"Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnug ist falsch.


[img]http://img212.imageshack.us/img212/6094/unbenanntki4.jpg[/img]



LG
Matze
Bitte warten ..
Mitglied: matze-pe
05.02.2008 um 18:34 Uhr
Hallo Ihr beiden,
vielen Dank erstmal an euch beiden, aber das Probelm besteht weiterhin, das der Dateinanemn nicht stimmt, siehe screenshot^^


LG
Matze
Bitte warten ..
Mitglied: bastla
05.02.2008 um 18:48 Uhr
Hallo matze-pe!

Anmerkung zu Deinem Screenshot:
Im CMD-Fenster lässt sich sehr einfach Text markieren und kopieren - dazu Rechtsklick auf das Systemmenü (ganz links in der Titelleiste) des CMD-Fensters und im Register "Optionen" den "QuickEdit-Modus" einschalten. Beim Beenden die zweite Option ("... für alle Fenster ...") wählen. Ab sofort kannst Du dann im CMD-Fenster mit der linken Maustaste markieren und durch Rechtsklick kopieren, bzw, wenn kein Text markiert ist, durch Rechtsklick den Inhalt der Zwischenablage einfügen. Dann noch den so kopierten Text zwischen <code>-Tags stellen und posten ...

Bevor Du das ausprobierst ändere aber bitte das "@echo off" in der ersten Batchzeile auf "@echo on" - dann sieht man/frau nämlich, wodurch der Fehler ausgelöst wird.

Da ich den eigentlichen Verschiebeteil unverändert übernommen habe, kann der Fehler eigentlich nur auf den Verzeichnisnamen zurückzuführen sein - daher kannst Du wahrscheinlich schon nach den ersten 3 Dateien den Batch abbrechen.

Na ja, schaun mer mal ...
@Biber
D'accord.

Eigentlich wollte ich gleich den gesamten Datumsstring passend formatiert ausgeben (was ich ja ohnehin mache), aber dann ist mir die Diskrepanz zwischen Beschreibung (Trennzeichen "_") und "set"-Zeile (Trennzeichen "-") aufgefallen, und daher wollte ich matze-pe die "gewohnten" Variablen bieten, um sich den endgültigen Verzeichnisnamen daraus selbst zusammenzusetzen - nixdestotrotz ist natürlich Dein Vorschlag eleganter.

Grüße
bastla
Bitte warten ..
Mitglied: matze-pe
06.02.2008 um 09:29 Uhr
Alles klar, vielen Dank.

Hat wunderbar funktioniert.


LG
Matze
Bitte warten ..
Mitglied: Biber
06.02.2008 um 09:41 Uhr
Moin matze-pe,

hab ich nicht verstanden.
Was war denn nun der Unterschied zwischen dem Skript, das den Fehler oben geworfen hat und dem, das wunderbar funktioniert?

Oder noch hilfreicher für alle MitleserInnen:
poste doch bitte noch mal die Version, die jetzt tatsächlich im richtigen Leben einsetzbar ist.

Danke
Biber
Bitte warten ..
Mitglied: matze-pe
06.02.2008 um 11:24 Uhr
Hallo,
der Fehler lag in der Pafdangabe.

Und ein kleiner Denkfehler ist noch drin, ist es möglich das Datum vom Ordner 4 Tage zurück zu setzen und die Dateien der letzten 3 Tage.

Beispiel: Heute haben wir den 6.2.08, die Dateien werden bis zum 02.02.08 gesichert und der Ordnernamen heißt bis_08-02-03


Ist es möglich das zu ändern?


Vielen Dank


LG
Matze
Bitte warten ..
Mitglied: bastla
06.02.2008 um 14:27 Uhr
Hallo matze-pe!

Etwa so:
01.
echo D=DateAdd("d",-%MindestAlter%-1,Now)...
Damit bleibt's immer noch variabel, ansonsten einfach:
01.
echo D=DateAdd("d",-4,Now)...
Grüße
bastla
Bitte warten ..
Mitglied: matze-pe
07.02.2008 um 09:17 Uhr
Wunderbar, hat geklappt

Vielen vielen Dank
Bitte warten ..
Ähnliche Inhalte
Microsoft
WSUS Defenderupdateverteilung misslingt seit 3 Tagen auf Win10
gelöst Frage von DerWoWussteMicrosoft12 Kommentare

Moin. Definition Update for Windows Defender - KB2267602 (Definition 1.239.677.0) - Error 0x80070643 Seit mehreren Tagen installieren die win10-Clients ...

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

VB for Applications
VB olMail.ExpiryTime gleich Heute Plus 3 Tage
gelöst Frage von Pago159VB for Applications2 Kommentare

Hallo Kollegen, ich bin gerade dabei, Mailvorlagen zu Programmieren. Soweit hat auch alles geklappt, wo ich mich jetzt allerdings ...

Exchange Server
Exchange 2010: Weiterleiten von E-Mails die in den letzten 3 Tagen angekommen sind
Frage von ticuta1Exchange Server1 Kommentar

hallo zusammen, "Ist Zustand": Umgebung Exchange 2010 Ein Mitarbeiter hat sich seit drei Tagen krank gemeldet. Der Chef will ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 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 2 TagenDSL, VDSL2 Kommentare

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

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...