From eff926a443ea411649c7d59538a7f810e826aeb0 Mon Sep 17 00:00:00 2001 From: Conrads Date: Mon, 22 Sep 2025 13:26:05 +0200 Subject: [PATCH] =?UTF-8?q?Hinzuf=C3=BCgen=20eines=20Skripts=20zum=20Drag?= =?UTF-8?q?=20&=20Drop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + pptx_image_compress_drag_n_drop.cmd | 142 ++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 pptx_image_compress_drag_n_drop.cmd diff --git a/.gitignore b/.gitignore index b450d13..4e1a59c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ python-3.*-embed-amd64.zip python-embed/* .vscode/launch.json +logs/*.log \ No newline at end of file diff --git a/pptx_image_compress_drag_n_drop.cmd b/pptx_image_compress_drag_n_drop.cmd new file mode 100644 index 0000000..e77bfba --- /dev/null +++ b/pptx_image_compress_drag_n_drop.cmd @@ -0,0 +1,142 @@ +@echo off +setlocal EnableExtensions DisableDelayedExpansion + +rem ========================================================== +rem PPTX Image Compressor - Drag&Drop Wrapper (robust + logging, RC-Fix) +rem ========================================================== + +set "SELF_DIR=%~dp0" +set "RUNNER=%SELF_DIR%install_and_run.bat" + +set "DEFAULT_THREADS=8" +set "DEFAULT_QUALITY=90" +set "PAUSE_ON_ERROR=1" +set "PAUSE_ALWAYS=1" + +for /f "delims=" %%A in ('echo prompt $E^| cmd') do set "ESC=%%A" +set "GREEN=%ESC%[92m" +set "YELLOW=%ESC%[93m" +set "RED=%ESC%[91m" +set "RESET=%ESC%[0m" + +if not exist "%RUNNER%" ( + echo %RED%[ERROR]%RESET% Runner nicht gefunden: "%RUNNER%" + pause + exit /b 2 +) + +if "%~1"=="" ( + echo Ziehe 1..n ^*.pptx Dateien auf "%~nx0". + pause + exit /b 64 +) + +set "LOGDIR=%SELF_DIR%logs" +if not exist "%LOGDIR%" mkdir "%LOGDIR%" >nul 2>&1 +for /f "usebackq delims=" %%t in (`powershell -NoLogo -NoProfile -Command "(Get-Date).ToString('yyyy-MM-dd_HH-mm-ss')"`) do set "TS=%%t" +set "LOGFILE=%LOGDIR%\dragdrop_%TS%.log" + +( + echo ========================================================== + echo Drag^&Drop Session %DATE% %TIME% + echo Runner: "%RUNNER%" + echo Wrapper: "%~nx0" + echo WorkingDir: "%CD%" + echo Defaults: threads=%DEFAULT_THREADS%, quality=%DEFAULT_QUALITY% + echo Args: + for %%# in (%*) do @echo "%%~f#" + echo ========================================================== +) >>"%LOGFILE%" 2>&1 + +set /a TOTAL=0, OK=0, FAIL=0, SKIP=0 + +:loop +if "%~1"=="" goto done +set "ARG_FULL=%~f1" +set "ARG_EXT=%~x1" +set /a TOTAL+=1 + +if not exist "%ARG_FULL%" ( + echo %YELLOW%[SKIP]%RESET% Nicht gefunden: "%ARG_FULL%" + echo [SKIP] Not found: "%ARG_FULL%" >>"%LOGFILE%" 2>&1 + set /a SKIP+=1 + shift & goto loop +) +if exist "%ARG_FULL%\" ( + echo %YELLOW%[SKIP]%RESET% Ist ein Ordner: "%ARG_FULL%" + echo [SKIP] Is a directory: "%ARG_FULL%" >>"%LOGFILE%" 2>&1 + set /a SKIP+=1 + shift & goto loop +) +if /I not "%ARG_EXT%"==".pptx" ( + echo %YELLOW%[SKIP]%RESET% Keine PPTX: "%ARG_FULL%" + echo [SKIP] Not a .pptx: "%ARG_FULL%" >>"%LOGFILE%" 2>&1 + set /a SKIP+=1 + shift & goto loop +) + +echo. +echo ===== Verarbeite: "%ARG_FULL%" ===== +echo ----- Processing "%ARG_FULL%" ----- >>"%LOGFILE%" 2>&1 + +REM --- Runner aufrufen + vollständige Ausgabe loggen +call "%RUNNER%" -i "%ARG_FULL%" -t %DEFAULT_THREADS% -q %DEFAULT_QUALITY% >>"%LOGFILE%" 2>&1 +echo ----- [INFO] Errorlevel = "%ERRORLEVEL%" +set "RC=%ERRORLEVEL%" +echo ----- [INFO] ReturnCode = "%RC%" + +REM --- ROBUSTE NUMERISCHE PRÜFUNG STATT STRINGVERGLEICH +REM (GEQ 1 => Fehler; EQ 0 => OK) + +if "%RC%"=="" set "RC=1" +set /a RC+=0 +echo ----- [INFO] ReturnCodeAgain = "%RC%" + +if %RC% GEQ 1 ( + echo ----- [WARN] Assuming RC GEQ 1 + echo %RED%[FAIL]%RESET% "%ARG_FULL%" (Code %RC%) + echo [FAIL] "%ARG_FULL%" Code=%RC% >>"%LOGFILE%" 2>&1 + set /a FAIL+=1 +) else ( + echo %GREEN%[OK]%RESET% "%ARG_FULL%" + echo [OK] "%ARG_FULL%" >>"%LOGFILE%" 2>&1 + set /a OK+=1 + set /a FAIL=0 +) + +echo ---- [INFO] Fail-State = "%FAIL%" + +shift +goto loop + +:done +echo. +echo ------------------ Zusammenfassung ------------------ +echo Dateien gesamt: %TOTAL% +echo Erfolgreich: %OK% +echo Fehlgeschlagen: %FAIL% +echo Uebersprungen: %SKIP% +echo Log-Datei: "%LOGFILE%" +echo ---------------------------------------------------- +echo.>>"%LOGFILE%" & echo Summary: total=%TOTAL% ok=%OK% fail=%FAIL% skip=%SKIP%>>"%LOGFILE%" + +if %FAIL% GTR 0 ( + echo %RED%Ergebnis:%RESET% teils fehlgeschlagen. Bitte Log pruefen: + echo "%LOGFILE%" + if "%PAUSE_ON_ERROR%"=="1" ( + echo. + echo [ENTER] druecken, um das Log in Notepad zu oeffnen... + pause >nul + start "" notepad "%LOGFILE%" + echo [CMD-Fenster bleibt bis zum Schliessen von Notepad geoeffnet.] + pause + ) + endlocal & exit /b 1 +) else ( + echo %GREEN%Ergebnis:%RESET% alle erfolgreich. + if "%PAUSE_ALWAYS%"=="1" ( + echo. + pause + ) + endlocal & exit /b 0 +)