Ich versuche, ein Batch-Skript zu schreiben, das täglich automatisch ausgeführt wird und Folgendes tut:
- Verschieben Sie Dateien, die älter als 2 Tage sind, aus dem Hauptverzeichnis (Jason) in ein Archivverzeichnis.
- Zip-Dateien im Archivverzeichnis, die älter als 1 Woche sind und löschen Sie Dateien aus diesem Verzeichnis, die älter als 6 Monate sind.
- Ich möchte dieses Skript aus einem anderen Verzeichnis ausführen (nicht aus dem Verzeichnis, in dem sich die Dateien befinden).
Ich habe das folgende Skript geschrieben, aber es funktioniert nicht richtig.
REM verschiebt Dateien, die älter als 2 Tage sind, in ein Archivverzeichnis robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2
Fragen:
- Wie kann ich den folgenden Befehl ändern, um Dateien zu komprimieren, die älter als eine Woche sind?
- Ist es möglich, dass die komprimierten Dateien dasselbe Erstellungsdatum und dieselbe Erstellungszeit wie die Originaldateien haben?
REM-Zip aller Dateien im Backup-Verzeichnis FOR %%A IN (*.TXT*, *.cpi*) DO "C:\Programme\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A" FÜR %%A IN (*.TXT, *.cpi) DO DEL "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A" REM Löschen Sie alle Dateien im Backup-Verzeichnis, die älter als 6 Monate sind für Dateien /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @Pfad"
Antwort1
Ich an deiner Stelle würde hierfür keinen Zyklus verwenden. Ich würde die von @harper vorgeschlagene Methode bevorzugen. Aber hier ist trotzdem die von dir gewünschte Methode:
REM move files older than 2 days to an archive directory
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.txt /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.cpi /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
REM zip all files in the backup directory
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -7') do "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%a"
REM Delete all files in the backup directory that are older than 6 months
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -183') do del D:\Agentrics\integration\incoming\Jason\archive\%%a /y