@echo off setlocal enableextensions disabledelayedexpansion chcp 1252 set task=none :startup cls echo ========================================================================== echo === 40tude Dialog: Bereinigung der Gruppen-Konfigurationsinformationen === echo === D.h.: Nicht erforderliche *.ini-Dateien werden in *.del umbenannt. === :: === Autor: Bernd Rose === :: === Status: Public Domain === :: === Quelle: www.barghahn-online.de/4td_faq/backup.html#clean_ini === set Version=2020-10-12 echo ================================================== [7mVersion: %Version%[0m === echo. if [%task%] neq [del] goto next echo [92mBereinigung beendet. (%cnt_var% Dateien zum Löschen vorbereitet.)[0m echo. endlocal goto choose :next if [%task%] neq [recov] goto hints echo [92mVorgang beendet. (%cnt_var% Dateien wiederhergestellt.)[0m echo. goto choose :hints echo Hinweise: echo 1. Das Skript %~nx0 muss im Hauptverzeichnis von 40tude Dialog liegen. echo 2. Zum Start des Skriptes z.B. im Explorer auf %~nx0 doppelklicken. echo 3. Das Skript ermöglicht sowohl Löschvorbereitung (*.ini -^> *.del) als auch echo (möglichst zeitnah durchzuführendes!) Wiederherstellen (*.del -^> *.ini). echo 4. Vorhandene Dateien werden jeweils ohne Nachfrage überschrieben! echo 5. Einstellungen für alle nicht-abonnierten Newsgruppen gehen verloren, sofern echo diese nicht wenigstens eine gelöschte oder ungelöschte Nachricht enthalten. echo 6. Der 40tude-Dialog-Befehl "Datenbank komprimieren" überspringt *.del-Dateien. echo Statt alle *.del-Dateien manuell aus dem Dialog-Unterverzeichnis data zu echo löschen, kann somit auch einfach die Datenbank komprimiert werden. echo 7. Niemals *.del-Dateien aus einer Komprimierungs-Sicherung zurückspielen! echo (Beim Komprimieren ändern sich die Gruppennummern.) echo. tasklist | find /i "dialog.exe">nul if errorlevel 1 goto dir_chk echo [4m[91mAbbruch:[24m 40tude Dialog muss bei diesem Vorgang geschlossen sein![0m goto exit :dir_chk if exist "%~dp0Dialog.exe" (if exist "%~dp0data\." goto ok) echo [4m[91mAbbruch:[24m Dialog.exe oder Unterverzeichnis data fehlen im aktuellen Verzeichnis. echo Das Skript muss aus dem Programmverzeichnis von 40tude Dialog gestartet werden.[0m goto exit :ok cd data :choose echo Folgende Optionen stehen zur Auswahl: [91m(Fortsetzen auf eigenes Risiko!!)[0m echo [L]öschvorbereitung (*.ini -^> *.del; überschreibt *.del ohne Nachfrage) echo [W]iederherstellen (*.del -^> *.ini; überschreibt *.ini ohne Nachfrage) echo [B]eenden echo. choice /c:lwb /n /m "Bitte wählen:" if errorlevel 3 goto finalexit if errorlevel 2 goto recover if exist groups_sub.lst del groups_sub.lst certutil -encodehex groups_sub.idx groups_sub.hex 4 >nul setlocal enabledelayedexpansion for /f "tokens=1-16 delims= " %%a in (groups_sub.hex) do ( set /a tmp_val=0x00%%d%%c%%b%%a & @echo !tmp_val!>> groups_sub.lst set /a tmp_val=0x00%%h%%g%%f%%e & @echo !tmp_val!>> groups_sub.lst set /a tmp_val=0x00%%l%%k%%j%%i & @echo !tmp_val!>> groups_sub.lst set /a tmp_val=0x00%%p%%o%%n%%m & @echo !tmp_val!>> groups_sub.lst ) if exist groups_sub.hex del groups_sub.hex if not exist groups_sub.lst ( echo [4m[91mAbbruch^:[24m Die Gruppenliste von 40tude Dialog konnte nicht konvertiert werden. echo Möglicherweise ist certutil.exe für den angemeldeten Nutzer nicht verfügbar.[0m goto exit ) set /a cnt_var=0 for %%f in (*.ini) do ( if not exist %%~nf.dat ( if not "%%f" == "default.ini" ( if %%~nf gtr 2 ( findstr /x "%%~nf" groups_sub.lst>nul if !errorlevel! equ 0 ( move /y %%f %%~nf.del>nul set /p %i=.<nul set /a cnt_var+=1 ) ) ) ) ) set task=del sleep 1 goto startup :recover set /a cnt_var=0 for %%f in (*.del) do ( if not "%%f" == "default.del" ( if %%~nf gtr 2 ( if exist %%~nf.ini move /y %%~nf.ini %%~nf.sik>nul move /y %%f %%~nf.ini>nul set /p %i=.<nul set /a cnt_var+=1 ) ) ) set task=recov sleep 1 goto startup :exit echo. pause :finalexit