diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..33a1a86 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,18 @@ +# CHANGELOG - WINSTARTSTOP + +- **2025/04/19 - v.0.1.1** + - **Überarbeitet:** + - `startup.bat` + - Warteschleife integriert (prüft bis zu 60 Sekunden auf Verfügbarkeit der Ramdisk) + - Logging hinzugefügt (`ramdisk_log.txt`) mit Zeitstempeln und Statusmeldungen pro Verzeichnis + - Kommentare und Struktur des Batchskripts verbessert + - Fehlerbehandlung ergänzt (Abbruch bei nicht erreichbarer Ramdisk) + + - **Dokumentiert:** + - `README.md` + - sprachlich und strukturell überarbeitet + - Installation und Verhalten der Skripte klarer beschrieben + - Hinweis auf integrierte Ramdisk-Wartezeit ergänzt + + - **Erstellt:** + - MS-DOS-inspiriertes Projektlogo als PNG (schwarz-blau, Cmd-Style, RAM-Icon, Power/Shutdown-Elemente) diff --git a/README.md b/README.md index b9b26c4..7a9153e 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,84 @@ -# Sammulung von Start- Shutdown Scripten +# Sammlung von Start- und Shutdown-Skripten -(C) 2025 Adam Skotarczak ([LICENZE](./LIZENSE)) +![Projektlogo](./assets/logo-alpha_250x250.png) + +> (C) 2025 Adam Skotarczak +> [Lizenz anzeigen](./LIZENSE) + +## Inhalt: + +- [Sammlung von Start- und Shutdown-Skripten](#sammlung-von-start--und-shutdown-skripten) + - [Inhalt:](#inhalt) + - [Übersicht](#übersicht) + - [Skripte](#skripte) + - [`startup.bat`](#startupbat) + - [Beispiel:](#beispiel) + - [Funktionsweise:](#funktionsweise) + - [Installation:](#installation) + - [`shutdown.bat`](#shutdownbat) + - [Installation:](#installation-1) + - [Parameter:](#parameter) + - [Hinweise](#hinweise) + +## Übersicht + +Dieses Repository enthält Windows-Batchskripte zur Initialisierung und Aufräumroutine bei Systemstart und -shutdown. +Ziel ist es, temporäre Ressourcen effizient zu verwalten (z. B. Ramdisk, Temp-Ordner etc.). ## Skripte -[PLATZHALTER] +### [`startup.bat`](./scripts/startup.bat) + +Erstellt beim Systemstart vordefinierte Verzeichnisse auf einem beliebigen Zielpfad (z. B. Ramdisk). + +#### Beispiel: + +```cmd +startup.bat R:\ +``` + +#### Funktionsweise: + +- Beim ersten Start wird automatisch die Datei `dirlist.txt` im selben Verzeichnis erzeugt. +- In `dirlist.txt` werden die Verzeichnisse aufgelistet, die erstellt werden sollen. +- Die angegebene Ramdisk muss zum Zeitpunkt des Skriptaufrufs vorhanden sein. +- Es wird eine Logdatei `ramdisk_log.txt` angelegt, die alle Aktionen protokolliert. + +#### Installation: + +```text +gpedit.msc → Computerkonfiguration → Windows-Einstellungen → Skripts (Starten) +``` + +--- ### [`shutdown.bat`](./scripts/shutdown.bat) -Löscht diverse tempoäre Pfade unter windows. Sollte z.B beim Shutdown eingesetzt werden: +Bereinigt temporäre Pfade unter Windows. Ideal für den Einsatz beim Herunterfahren des Systems. -#### Installation +#### Installation: -`gpedit.msc → Computerkonfiguration → Windows-Einstellungen → Skripts (Herunterfahren)` +```text +gpedit.msc → Computerkonfiguration → Windows-Einstellungen → Skripts (Herunterfahren) +``` -![Screesnshot gpedit.msc](./assets/gpedit.png) +![Screenshot gpedit.msc](./assets/gpedit.png) -#### Parameter +#### Parameter: -| Aufruf | Wirkung | -|-----------------------------|------------------------------------------------------| -| `shutdown.bat` | Führe Cleanup aus, keine Logs | -| `shutdown.bat debug` | Führe Cleanup aus + logge nach shutdownbat.log | -| `shutdown.bat test` | Simuliere nur, keine Daten werden gelöscht | -| `shutdown.bat test debug` | Simuliere + logge alles | +| Aufruf | Wirkung | +|---------------------------|--------------------------------------------------| +| `shutdown.bat` | Führt Cleanup aus, ohne Logging | +| `shutdown.bat debug` | Cleanup + Logausgabe in `shutdownbat.log` | +| `shutdown.bat test` | Simulation (kein Löschen) | +| `shutdown.bat test debug` | Simulation + Logging | -### [`startup.bat`](./scripts/startup.bat) +--- -Erstellt an einem beliebigen Pfad eine Verzeichnisebene. +## Hinweise -> `./startup.bat R:\` +- Die integrierte Warteschleife in `startup.bat` prüft bis zu 30 Sekunden lang, ob das angegebene Laufwerk (z. B. Ramdisk) verfügbar ist. +- Für erweiterte Steuerung kann zusätzlich der Windows-Taskplaner verwendet werden (z. B. zum verzögerten Start). +- Die Logdateien wachsen mit – regelmäßige Wartung empfohlen. -Das Skript erstellt beim ersten Aufruf die Datei `dirlist.txt` in gleichen Veerzeichnis in dem sich das Skript befindet. Diese Datei kann bearbeitet und weitere Verzeichnise hinzugefügt werden. Mit erneutem Aufruf werden diese Verzeichnise erstellt. +--- diff --git a/VERSION b/VERSION index 6c6aa7c..6da28dd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0 \ No newline at end of file +0.1.1 \ No newline at end of file diff --git a/assets/logo-alpha.png b/assets/logo-alpha.png new file mode 100644 index 0000000..39bf4e2 Binary files /dev/null and b/assets/logo-alpha.png differ diff --git a/assets/logo-alpha_250x250.png b/assets/logo-alpha_250x250.png new file mode 100644 index 0000000..419e492 Binary files /dev/null and b/assets/logo-alpha_250x250.png differ diff --git a/assets/logo-dark.png b/assets/logo-dark.png new file mode 100644 index 0000000..9a2460a Binary files /dev/null and b/assets/logo-dark.png differ diff --git a/assets/winstartstop.ico b/assets/winstartstop.ico new file mode 100644 index 0000000..70172da Binary files /dev/null and b/assets/winstartstop.ico differ diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000..151b27d --- /dev/null +++ b/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=.\assets\winstartstop.ico,0 +[ViewState] +Mode= +Vid= +FolderType=Documents diff --git a/scripts/ramdisk_log.txt b/scripts/ramdisk_log.txt new file mode 100644 index 0000000..19a41f1 --- /dev/null +++ b/scripts/ramdisk_log.txt @@ -0,0 +1,16 @@ +[2025-04-19_10:56:58] Ramdisk R:\ wurde gefunden. +[2025-04-19_10:56:58] Bereits vorhanden: R:\Temp +[2025-04-19_10:56:58] Bereits vorhanden: R:\ChromeProfile +[2025-04-19_10:56:58] Bereits vorhanden: R:\ChromeCache +[2025-04-19_10:56:58] Bereits vorhanden: R:\Downloads +[2025-04-19_10:56:58] Bereits vorhanden: R:\Arbeitsverzeichnis +[2025-04-19_10:56:58] Bereits vorhanden: R:\BraveCache-Ascot +[2025-04-19_10:56:58] Verzeichniserstellung abgeschlossen. +[2025-04-19_11:01:31] Ramdisk R:\ wurde gefunden. +[2025-04-19_11:01:31] Erstellt: R:\Temp +[2025-04-19_11:01:31] Erstellt: R:\ChromeProfile +[2025-04-19_11:01:31] Erstellt: R:\ChromeCache +[2025-04-19_11:01:31] Erstellt: R:\Downloads +[2025-04-19_11:01:31] Erstellt: R:\Arbeitsverzeichnis +[2025-04-19_11:01:31] Erstellt: R:\BraveCache-Ascot +[2025-04-19_11:01:31] Verzeichniserstellung abgeschlossen. diff --git a/scripts/startup.bat b/scripts/startup.bat index 71f0e25..7f9cee4 100644 --- a/scripts/startup.bat +++ b/scripts/startup.bat @@ -4,11 +4,18 @@ setlocal enabledelayedexpansion :: :: (C) Adam Skotarczak 2025 :: Erstellt Ramdisk-Verzeichnisse – Pfad als Parameter übergeben +:: Mit Warte-Logik und Logging :: -:: --- Konfiguration: Verzeichnisliste --- -:: (Kommentare mit :: möglich, Leerzeilen erlaubt) +:: --- Konfiguration --- set "DIRS_FILE=%~dp0dirlist.txt" +set "LOGFILE=%~dp0ramdisk_log.txt" + +:: --- Hilfsfunktion: Zeitstempel --- +for /f %%T in ('powershell -nologo -command "Get-Date -Format yyyy-MM-dd_HH:mm:ss"') do set "TIMESTAMP=%%T" + +:: --- Logging-Funktion --- +set "LOGENTRY=[%TIMESTAMP%]" :: Wenn dirlist.txt nicht existiert, erzeugen if not exist "%DIRS_FILE%" ( @@ -20,11 +27,12 @@ if not exist "%DIRS_FILE%" ( echo Downloads echo Arbeitsverzeichnis ) + echo %LOGENTRY% Datei dirlist.txt wurde erzeugt. Inhalt ggf. anpassen und erneut ausfuehren.>>"%LOGFILE%" echo Datei dirlist.txt wurde erzeugt. Inhalt ggf. anpassen und erneut ausfuehren. goto :eof ) -:: --- Hilfe anzeigen, wenn kein Parameter übergeben wird --- +:: --- Hilfe anzeigen --- if "%~1"=="" ( echo. echo Syntax: %~nx0 [Laufwerkspfad] @@ -37,17 +45,40 @@ if "%~1"=="" ( goto :eof ) -:: --- Zielpfad aus Parameter setzen --- +:: --- Zielpfad setzen --- set "RAMDISK=%~1" if not "%RAMDISK:~-1%"=="\" set "RAMDISK=%RAMDISK%\" +:: --- Auf Ramdisk warten (max. 30 Sekunden) --- +set "WAIT=0" +:waitloop +if exist "%RAMDISK%." goto :continue +timeout /t 1 >nul +set /a WAIT+=1 +if %WAIT% GEQ 60 ( + echo %LOGENTRY% [FEHLER] Ramdisk %RAMDISK% nicht gefunden – Abbruch.>>"%LOGFILE%" + echo [FEHLER] Ramdisk %RAMDISK% nicht gefunden – Abbruch. + goto :eof +) +goto waitloop +:continue + +echo %LOGENTRY% Ramdisk %RAMDISK% wurde gefunden.>>"%LOGFILE%" + :: --- Verzeichnisse erstellen --- for /f "usebackq tokens=*" %%D in ("%DIRS_FILE%") do ( set "LINE=%%D" if not "!LINE!"=="" if "!LINE:~0,2!" NEQ "::" ( - if not exist "%RAMDISK%!LINE!" mkdir "%RAMDISK%!LINE!" + set "TARGET=%RAMDISK%!LINE!" + if not exist "!TARGET!" ( + mkdir "!TARGET!" + echo %LOGENTRY% Erstellt: !TARGET!>>"%LOGFILE%" + ) else ( + echo %LOGENTRY% Bereits vorhanden: !TARGET!>>"%LOGFILE%" + ) ) ) echo Verzeichnisse in %RAMDISK% wurden erstellt. +echo %LOGENTRY% Verzeichniserstellung abgeschlossen.>>"%LOGFILE%" endlocal