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

Löschen von Dateien zwischen zwei Uhrzeiten per Batch (XP, Server 2003)

Frage Entwicklung Batch & Shell

Mitglied: theuncle

theuncle (Level 1) - Jetzt verbinden

06.11.2010, aktualisiert 16:27 Uhr, 4752 Aufrufe, 6 Kommentare

Benötige Batchdatei zum Löschen von Dateien in einem bestimmten Zeitraum (eines Tages). (XP, Server 2003)

Ola Leutz,

Vorgeschichte:
Wir fummeln seit Jahren an einem Batchpaket für unsere Server herum, welche wir bereits geraume Zeit für die unterschiedlichsten Zwecke einsetzen. Fast alles, was wir für eine schnelle Administration bzw. Sonderwünsche benötigen, ist bereits erstellt, welches nicht zuletzt auch Euch zu verdanken ist (Gruss an den Biber).
Man kann sich ja fast alles aus dem Forum holen, was man braucht. Nun hat ein Techniker letztens noch ein paar schöne Ideen gehabt und dafür brauche ich u.a. eine speziell umgesetzte Funktion in einer Batch mit Standardbefehlen.

Bisher nicht in der Form gefunden oder von mir zu schlecht kombiniert, i.e. nicht lauffähig ist folgende Problemstellung:

Löschen von Dateien in einem Verzeichnis (alternativ rekursiv mit Unterverzeichnissen) ZWISCHEN zwei anzugebenden UHRzeiten (Dateien sind zumeist alle von einem Tag).
Die Uhrzeiten können evtl. per SET (in der Batch) oder Parameter (%1, %2) in die Batch einfliessen.

Ihr würdet uns, wie immer, sehr helfen ... vielen Dank im voraus.

Mit freundlichen Grüßen theuncle
Mitglied: bastla
06.11.2010 um 17:58 Uhr
Hallo theuncle!

Ja nach dem von Euch verwendeten Datums-/Zeitformat sind ev Anpassungen erforderlich, aber als Test an der Kommandozeile könnte das schematisch etwa so gehen:
for %i in ("D:\Das Verzeichnis\*.*") do @for /f "tokens=2" %a in ("%~ti") do @if "%a" geq "07:00" @if "%a" leq "12:00" @echo %a --^> "%i" wird geloescht
Hier würden ohne Berücksichtigung des Datums alle zwischen (inklusive) "07:00" und "12:00" (die Grenzen können/sollten natürlich als Variable angegeben werden) zuletzt geänderten Dateien erfasst.

Rekursiv wird's bei Bedarf mit "for /r" ...

Grüße
bastla
Bitte warten ..
Mitglied: 90776
06.11.2010 um 18:03 Uhr
Hallo

nach Bastla noch den reinen Zeitcode

01.
@echo off 
02.
 
03.
echo. 
04.
echo Format muss 00:00 sein! 
05.
echo. 
06.
 
07.
set /p time1=Bitte Erste  Zeit eingeben (von):  
08.
set /p time2=Bitte Zweite Zeit eingeben (bis):  
09.
 
10.
if %time1% LSS 00:00 goto Fehler 
11.
if %time2% LSS 00:00 goto Fehler 
12.
if %time1% GTR 23:59 goto Fehler 
13.
if %time2% GTR 23:59 goto Fehler 
14.
if not %time1:~2,1% EQU : goto Fehler 
15.
if not %time2:~2,1% EQU : goto Fehler 
16.
if not DEFINED time1 goto Fehler 
17.
if not DEFINED time2 goto Fehler 
18.
 
19.
 if %time:~0,2%:%time:~3,2% GEQ %time1% if %time:~0,2%:%time:~3,2% LEQ %time2% ( 
20.
  goto Process 
21.
   ) else ( 
22.
    Goto Fehler 
23.
24.
 
25.
:Fehler 
26.
echo FEHLER 
27.
pause 
28.
exit 
29.
 
30.
:Process 
31.
echo OK 
32.
pause
einfach unter Process die gewünschten Befehle einfügen
Bitte warten ..
Mitglied: theuncle
08.11.2010 um 18:27 Uhr
Hallo Bastla, hallo switcher94,

erst einmal vielen herzlichen Dank für die wahnsinnig schnell zur Verfügung gestellte Lösung. Bin noch nicht wirklich zum Ausprobieren gekommen.

Werde mich höchstwahrscheinlich morgen dran setzen und den Code in unsere Batch integrieren. Gebe Euch natürlich noch ne Rückmeldung. Wollte mich nur schon einmal zwischendurch melden, um mich zu bedanken...

CU Theuncle
Bitte warten ..
Mitglied: theuncle
17.11.2010 um 11:08 Uhr
Hallo Bastla,

ich bin nun endlich zum Ausprobieren Deines Scripts/ Befehls gekommen. Entweder habe ich noch einen Schreibfehler drin oder habe die Syntax nicht kapiert.
Ob mit oder ohne aktivierte Befehls-Erweiterung (setlocal EnableDelayedExpansion) erscheint bei Ausführung folgende Fehlermeldung.
Info: e:\Test\ ist mein Proof-Ordner. Ich möchte es zum Testen in Windows XP Prof. in der Eingabeaufforderung nutzen. Die Fehlerausgabe ist tatsächlich abgeschnitten, i.e. fängt mit "\test .... an.

"\test\*.*") do @for /f "tokens" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Der Befehl ist fast identisch von o. übernommen und sieht so aus:

for %i in ("e:\test\*.*") do @for /f "tokens=2" %a in ("%~ti") do @if "%a" geq "07:00" @if "%a" leq "16:00" @echo %a --^> "%i" wird geloescht

Klar ist auch, dass ich bei einwandfreier Auflistung der gewünschten Dateien den Echo-Abschnitt durch meine Lösch-Befehle ersetze )))))))
Evtl. findet das geübtere Auge ja schnell den Fehler.

Vielen Dank schon einmal im voraus

The Uncle
Bitte warten ..
Mitglied: bastla
17.11.2010 um 13:25 Uhr
Hallo theuncle!

Falls Du den Oneliner als Batch verwenden willst, musst Du alle Prozentzeichen bei "%a" und "%i" (auch für "%~ti" wäre das dann "%%~ti") verdoppeln - direkt in der CMD-Shell eingegeben (und nur mit an mein System angepasstem Pfad von "e:\test\*.*") funktioniert Deine Zeile bei mir wie gewünscht ...

Grüße
bastla
Bitte warten ..
Mitglied: theuncle
17.11.2010 um 17:46 Uhr
Hallo Bastla,

wir nennen es ein Schicht 8 Problem. Oh oh, das darf hier auch kein anderer von unserem Team lesen ... *schäm.
Es läuft alles perfekt. Vielen Dank für alles ....

*klick auf gelöst ....

Cu the uncle
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch FTP-Server Dateien ändern (1)

Frage von Marlon1 zum Thema Batch & Shell ...

Windows Netzwerk
SMBv2 in Windows 7 - Windows XP - Windows Server 2003 Domäne deaktivieren (4)

Frage von Mario.Steinberg zum Thema Windows Netzwerk ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (9)

Frage von MultiStorm zum Thema Windows Netzwerk ...

Exchange Server
gelöst Microsoft Excange Server 2007 auf Windows Server 2003 Installieren? (9)

Frage von Herbrich19 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...