14. April 2023, 13:53
Lesezeit: ca. 1 Min

Schmerzbewältigung

Heute, kurz vor Wochenende verspürte ich beim Anblick eines PowerShell-Skriptes wieder diese Schmerzen. Auf mehreren Seiten hat jemand die System.IO.DirectoryInfo regelrecht vergewaltigt und fern von allen ästhetischen, technischen und rationalen Aspekten sich selbst verewigt. Dabei sollte das Skript nichts anderes als alle Unterverzeichnisse eines Ordners einzeln zippen und mit einem ISO 8601 konformen Zeitstempel Präfix in ein anderes Laufwerk schubsen.

Zur Schmerzbewältigung hier mein seit Jahrzehnten bewährter Dreizeiler. Im wortwörtlichen Sinne in nur drei Zeilen. Zur besseren Anpassbarkeit sind lediglich die Variablen abgesetzt:

@echo off

set TheLogFile="d:\output.log"
set ZipExecutable="c:\Program Files\7-Zip\7z.exe"
set WatchPath=d:\daily
set TargetPath=z:

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%%ldt:~4,2%%ldt:~6,2%

FOR /D %%I in ("%WatchPath%\*.*") do ( if EXIST "%WatchPath%\%%~nI" (%ZipExecutable% a -ssp -mx9 -mmt10 "%TargetPath%\%ldt%-%%~nI.7z" "%WatchPath%\%%~nI" -y >> %TheLogFile%) )

In diesem Sinne,
Ein schönes Wochenende!

Euer, Tomas Jakobs

© 2023 Tomas Jakobs - Impressum und Datenschutzhinweis