Ich möchte nur wissen:Batch-Datei, die eine Datei löscht, die letzte Änderung war heute nicht
Wie kann ich ‚log.txt‘ löschen, wenn die letzte Änderung heute nicht war?
Mit einer Batch-Datei.
Ich spreche hier nur über 1 Datei!
Ich möchte nur wissen:Batch-Datei, die eine Datei löscht, die letzte Änderung war heute nicht
Wie kann ich ‚log.txt‘ löschen, wenn die letzte Änderung heute nicht war?
Mit einer Batch-Datei.
Ich spreche hier nur über 1 Datei!
Sie können forfiles
:
forfiles /D -1 /M log.txt /C "cmd /c del @file"
PowerShell muss Batch ersetzen.
if ((dir log.txt).LastWriteTime -lt [datetime]::today) { del log.txt }
Nachdem ich Ihr Beispiel gesehen habe, stimme ich zu :) – RedFilter
... obwohl ich etwas betrübt bin - ich habe gerade festgestellt, dass Charge meine erste Sprache vor 25 Jahren war . GOTOs und alles! – RedFilter
ist es wirklich nicht ohne Powershell möglich? Nicht alle Computer verfügen über Powershell. Es wird etwas mit mehr Benutzern geben und ich möchte es nicht zu schwierig für sie machen. –
Batch macht etwas, das einfach sehr kompliziert. Wenn Sie Cygwin verwenden können, oder Unix-Tools installieren, sollten Sie so etwas wie dies zu tun:
find log.txt -mtime +1 -exec rm {} \;
UPDATE
gefunden etwas, das useful Sie könnte reinen Charge verwendet wird. Sie sollten in der Lage sein, dies zu ändern und an Ihre Bedürfnisse anzupassen.
"Etwas gefunden, das für die Verwendung von reinem Batch nützlich sein könnte" - Ich würde es nicht verwenden, da es auf Annahmen über die regionalen Einstellungen (US-Datumsformat) beruht. – Joe
Leider können Sie dies nicht in einer robusten und allgemeinen Weise tun (*).
Powershell, Cygwin, Unix Tools sind perfekte Lösungen, wenn Sie sicher sein können, dass sie auf dem Zielrechner installiert werden.
Ich schrieb ein kleines Dienstprogramm, das einen Pfad mit Platzhaltern und Anzahl der Tage nimmt und löscht alle Dateien mit dem Pfad, die älter als die angegebene Anzahl von Tagen sind. In meiner Umgebung war dies bequemer als die Installation eines 3rd-Party-Pakets.
(*) Im Folgenden wird für Ihren speziellen Fall (Änderungsdatum nicht heute), solange das kurzen Datumsformat in Ihren regionalen Einstellungen arbeiten enthält das Jahrhundert (das heißt 10 Zeichen lang ist). Aber es funktioniert nicht für N Tage verallgemeinern, und ich mag es nicht, auf die regionalen Einstellungen des Computers zu verlassen für diese Art der Sache:
for %%i in (log.txt) do SET FILETIME=%%~ti
IF NOT "%FILETIME:~0,10%" == "%DATE%" DEL /f log.txt
Für das, was seine wert, könnten Sie entweder jscript oder vbscript verwenden. Diese beiden Skriptsprachen wurden seit Mitte der 90er Jahre auf MS-Plattformen installiert.
Wenn ich ein neues Programm installieren muss, installiere ich stattdessen PowerShell. (Sie sollten auch auf forfiles verlinken) –
Huh? Forfiles ist in neueren Versionen von Windows enthalten. Keine Notwendigkeit, etwas zu installieren. – Joey
forfiles ist in Ordnung, denn wenn Sie PowerShell verwenden, müssen Sie wirklich ein neues Programm installieren. Mit forfiles können Sie einfach forfiles.exe in das Verzeichnis des Stapels einfügen. –