

SICHERUNGEN UND AUFRUMARBEITEN IN DOS



Wenn Windows startet, gibt es etliche Sicherungen, die durchzufhren sind, auf der andern
Seite mssen Sicherungsdateien regelmig gelscht werden - am besten die jeweils
ltesten. Zudem knnen dann Prozesse beendet werden, die nur Speicherplatz blockieren
und nderungen an der Registry zurckgenommen werden.


'Abgleich und Aufrum' - Batchdateien werden entweder im AUTOSTART angesprochen,
nach dem Starten von Windows, kann aber auch (in Win 98) in der Autoexec.bat
angesprochen werden (dann ffnet kein Extrafenster) - aber nur mit kurzen 8/3 Dateinamen!
Dafr werden die nderungen auch bei in Windows abgebrochener Routine durchgefhrt -
eben VOR Windows. Deshalb knnen da auch Sicherungsdateien wie die SWAP-Datei
gelscht werden, auf die nach dem Windows-Start kein Zugriff mehr besteht


Zum Schlu wird mit 	C:\WINDOWS\WIN.COM 	Windows gestartet


Anderseits kann, wenn die Batch-Datei erst nach dem Windows-Start angeworfen wird, in
Prozesse eingegriffen werden, die dann schon abgeschlossen sind und korrigiert werden
sollen.



Am besten ist es, eine oder zwei Start-Batch-Dateien zu erstellen, welche verschiedene Batch-
Dateien nacheinander mit


CALL C:\IRGENDWO\NAECHSTE.BAT

aufrufen; diese lassen sich dann leichter ndern.



Einzelne Batchdateien:




1. Killt Prozesse, um Speicher frei zu machen. Beispielsweise mit TASKKILL oder Kill.exe -
je nach Betriebssystem und benutzter Software

C:\irgendwo\kill_etwas.bat



Darin:

killtask Irgendwas.exe

killtask IrgendwasAnderes.exe

REM kill /f Mist.exe


...





2. Kopiert Dateien, um sie zu sichern - oder um wie hier eine Sicherung zurckzuspielen,
um einen bestimmten Stand in Windows immer wieder zu erzwingen:


C:\irgendwo\copy_etwas.bat


Darin:

if not exist "C:\irgendwo\irgendwas.ini" GOTO fehler
copy "C:\irgendwo\irgendwas.ini" "C:\WINDOWS\irgendwas.ini"

...

REM Wenn Alles gut geht:
GOTO ende

REM Wenn nicht:

:fehler

Echo.
ECHO FEHLER!!


Echo Es trat ein Fehler auf. Eine oder mehrere Dateien wurden
Echo moeglicherweise nicht gefunden.
Echo Das Programm wurde an dieser Stelle angehalten.
Echo Es wurden nicht alle Backups erstellt.
Echo.

exit


Rem Umgehungsziel und Ende:

:ende
echo.
echo Operation beendet.
echo.
echo Ende.
echo.
delay 3
echo.


:close

echo.
delay 3
echo Bitte Fenster schliessen.


REM Hier cls

CLS





3. Entfernt in der Registry beispielsweise hartnckige, unerwnschte "Neue..." - Eintrge
im Explorer-Kontextmen, die sonst nicht wegzukriegen sind:


regedit /s "C:\irgendwo\Neue_Datei_weg.reg"





4. Lscht einzelne Dateien oder ganze Verzeichnisse, wie C:\WINDOWS\TEMP
('Delay' ist eine Verzgerungsfunktion von DELAY.COM; es gibt auch Andere)


@ECHO OFF
ECHO.


echo Vorgang: Dateien loeschen
echo.
echo Loescht vorbestimmte Temporaere Dateien in WINDOWS und WINDOWS\TEMP
echo.

echo.
echo BESTAETIGUNG:

choice /c:jn /t:j,7 Soll dieser Vorgang in 7 Sekunden begonnen werden?
if errorlevel 2 goto ende


echo.
echo ABBRECHEN:
echo Fenster mit der MAUS! schliessen oder Vorgang mit STRG + C unterbrechen
echo.

delay 10

Rem echo Ansonsten:


ECHO.
ECHO Loescht *.tmp - Dateien in WINDOWS und WINDOWS\TEMP
delay 5

Del C:\WINDOWS\*.tmp
Del C:\WINDOWS\TEMP\*.tmp



ECHO.
ECHO Loescht ~*.* - Dateien in WINDOWS und WINDOWS\TEMP
delay 5

Del C:\WINDOWS\~*.*
Del C:\WINDOWS\TEMP\~*.*



delay 5
ECHO ENDE
delay 5

:ende

REM CLS
CLS









Schwieriger wird es, wenn man nicht ALLE Sicherungs-Dateien oder Verzeichnisse in einem
Ordner lschen will, sondern nur die jeweils ltesten.


Bentigt werden noch die Datei 'kn_umbr1.bat' - Bestehend aus der Zeile 'Hole ' - Ohne
Umbruch, aber mit Leerzeichen am Ende - bzw. die Datei 'kn_umbr2.bat'  sowie ggf. die
DELAY.COM.




REM ------------



REM Die Batch-Dateien befinden sich in C:\BackupGo



REM ------------



delay 1
echo.
echo. WRCK LOESCHEN
echo  Loescht alle WRCK-Verzeichnisse bis auf die letzten X !
echo  X = 4 Sicherungen (soweit das hier technisch moegliche!)
delay 3
call C:\WRCK\KillWRK.bat
echo.



REM ------------

REM Es folgt KillWRK.bat


@Echo Off

REM Bentigt werden noch die Datei 'kn_umbr1.bat' - hier versteckt!
REM Bestehend aus der Zeile 'Hole '
REM - Ohne Umbruch, aber mit Leerzeichen am Ende!

REM Sowie ggf. die delay.com


REM ACHTUNG:

REM KN_UMBR1.BAT listet nur Verzeichnisnamen ohne Leerzeichen korrekt
REM Mit KN_UMBR2.BAT werden auch Verzeichnisnamen mit Leerzeichen gelesen
REM Diese besteht aus der Zeile 'Hole "' ohne Umbruch am Ende
REM Des weiteren mssen die Variablen dann mit End-" gesetzt werden.


REM ACHTUNG:

REM Verzeichnisse werden im DOS samt Inhalt UNWIDERBRINGLICH gelscht!
REM Mit DELTREE ohne Nachfrage!

REM Rettung: Eine MS-DOS-Batch- Datei kann an den Haltepunkten mit der
REM Tastenkombination 'STRG + C' abgebrochen werden


REM ACHTUNG:

REM Wird diese Batch-Datei mit CALL von einer anderen aufgerufen, werden
REM Unterverzeichnisse im Verzeichnis der AUFRUFENDEN Datei gelscht!

REM In diesem Fall wo notwendig absolute Pfadangaben wie 'C:\...' machen.
REM Bzw. mit 'CD C:\...' in das zu subernde Verzeichnis wechseln


REM ACHTUNG:

REM Kopierte Verzeichnisse erhalten immer das aktuelle Datum!
REM Sie sind also ggf. die jngsten.

REM Man lernt...






REM VORLAUF


:BACK1



echo.
echo Liste das aktuelle Verzeichnis nach Datum
REM echo - nur Verzeichnisse


REM Vor dem gewnschten 'set' REM entfernen

REM D  Lscht im Ergebnis das lteste Verzeichnis zuerst
set WAHL=D

REM -D Lscht im Ergebnis das jngste Verzeichnis zuerst
REM set WAHL=-D


REM VERZEICHNIS EINLESEN

REM Ggf. enthaltendes Verzeichnis angeben

CD C:\WRCK

DIR /A:D /O:%WAHL% /B> C:\WRCK\Dir.txt


REM HOLT Dir.txt

copy C:\WRCK\Dir.txt  C:\WRCK\Inhalt.txt >nul

echo.
REM echo Inhalt der Eingabe:

echo _
type C:\WRCK\Inhalt.txt
REM sort /R C:\WRCK\Inhalt.txt

echo.
echo -
echo Ende Inhalt der Eingabe
echo.
echo. LOESCHT WRCK SICHERUNGEN
echo.
echo In der Loeschfolge

echo.
IF "%WAHL%"=="D" ECHO. AELTESTE ZUERST
IF "%WAHL%"=="-D" ECHO. JUENGSTE ZUERST
echo.


REM echo.
REM echo Der Vorlauf ist abgeschlossen
REM echo.

delay 4

REM PAUSE


REM Zum testen REM entfernen:
REM GOTO NEXT1








REM ----



REM Schreibe ins Zwischenlager ZW.bat

type C:\WRCK\kn_umbr1.bat>C:\WRCK\ZW.bat


REM Liste die Zahl der Verzeichnisse
DIR | FIND "Verzeichnis(se)" | FIND /V ":" >> C:\WRCK\ZW.bat


REM echo.
REM echo Holen der Variablen
REM echo.

REM PAUSE


REM Festlegen der gesuchten Variablen
echo set var1=%%1>C:\WRCK\Hole.bat

REM Holen derselben
call C:\WRCK\ZW.bat

REM echo.
REM echo Erkannte Variablen:
REM echo var1: '%var1%'
REM echo.

IF "%var1%"=="" echo. Variable 1 existiert nicht
IF "%var1%"=="" GOTO NEXT1

REM echo.

REM PAUSE

ECHO ERGEBNIS:


REM MAXIMAL 4
REM Prfung der Anzahl der angezeigten Verzeichnisse

REM Plus 0 im Stammverzeichnis: Ein Unterverzeichnis = 1
REM Plus 2 im Unterverzeichnis: Ein Unterverzeichnis = 3

REM Plus 2 im Unterverzeichnis: 4 Unterverzeichnis = 6
REM 4 nehmen; Bei 5 sind beim Start vor dem lschen 6 offen - WRCK blockiert!





REM ----




	REM !!WICHTIG!!



	REM RESTANZAHL X DER VERZEICHNISSE SORGFLTIG EINSTELLEN

	REM LETZTER HALT VOR DER ZERSTRUNG

	REM UNBEDINGT VON 0 (2) BIS INKLUSIVE X+2 ALLE EINTRAGEN


	IF %var1%==0 GOTO NEXT1
	IF %var1%==1 GOTO NEXT1
	IF %var1%==2 GOTO NEXT1
	IF %var1%==3 GOTO NEXT1
	IF %var1%==4 GOTO NEXT1
	IF %var1%==5 GOTO NEXT1
	IF %var1%==6 GOTO NEXT1


	REM Anzahl X und X+2 auch in NEXT1 eintragen

	echo.
	echo. Ausfuehrung
	echo.




REM ----



REM Eigentlich gehrt hier eine FOR-Schleife hin
REM Aber man kann mit den Variablen ja unterschiedliches anstellen



REM VERZEICHNISSE LSCHEN




REM Schreibe ins Zwischenlager ZW.bat

type C:\WRCK\kn_umbr2.bat>C:\WRCK\ZW.bat


type C:\WRCK\dir.txt >>C:\WRCK\ZW.bat


REM Festlegen der gesuchten Variablen
echo set var2=%%1">C:\WRCK\Hole.bat

REM Holen derselben
call ZW.bat

echo.
echo.
echo Zu loeschendes Verzeichnis:
echo var2: '%var2%'
echo.

IF "%var2%"=="" echo. Zu loeschendes Verzeichnis existiert nicht
IF "%var2%"=="" GOTO NEXT1


REM PAUSE

REM UND TSCHSS!

REM IF NOT "%var2%"=="" RMDIR %var2%
REM IF NOT "%var2%"=="" DELTREE %var2%


REM OHNE NACHFRAGE!



IF NOT "%var2%"=="" DELTREE /Y %var2%


echo.
IF Errorlevel 1 echo. Das Verzeichnis '%var2%' WURDE NICHT geloescht!
IF Errorlevel 0 echo. Das Verzeichnis '%var2%' wurde GELOESCHT!
echo.

IF NOT "%var2%"=="" GOTO BACK1


REM PAUSE





:NEXT1

echo.

REM X / X+2

IF %var1%==6 ECHO Noch 4 Unterverzeichnisse vorhanden

ECHO Keine zu loeschendenden Unterverzeichnisse erkannt!
echo.

delay 4


REM PAUSE

REM ABSCHLUSS




:ENDE1


echo.
echo Ende
echo.

REM Beseitigt Zwischenergebnisse:

del C:\WRCK\Dir.txt
del C:\WRCK\Inhalt.txt
del C:\WRCK\Hole.bat
del C:\WRCK\ZW.bat


REM RETURN:
CD C:\BackupGo


REM echo Schliesse in X Sekunden
delay 5

REM vor CLS entfernen
CLS








delay 1
echo.
echo. RS_BACKUP LOESCHEN
echo  Loescht alle R&S-Backups bis auf die letzten 7 !
echo  (soweit das hier technisch moegliche!)
delay 3
call C:\WRCK\KillRSbk.bat
echo.



REM ------------

REM Es folgt KillRSbk.bat


@Echo Off


REM ABGELEGT IN C/WRCK; DAMIT ES NICHT DURCH SICH SELBST GELSCHT WIRD


REM Bentigt werden noch die Datei 'kn_umbr1.bat' Hier aus C:\WINDOWS\COMMAND\
REM Bestehend aus der Zeile 'Hole '
REM - Ohne Umbruch, aber mit Leerzeichen am Ende!

REM Sowie ggf. die delay.com


REM ACHTUNG:

REM KN_UMBR1.BAT listet nur Verzeichnisnamen ohne Leerzeichen korrekt
REM Mit KN_UMBR2.BAT werden auch Verzeichnisnamen mit Leerzeichen gelesen
REM Diese besteht aus der Zeile 'Hole "' ohne Umbruch am Ende
REM Des weiteren mssen die Variablen dann mit End-" gesetzt werden.


REM ACHTUNG:

REM Verzeichnisse werden im DOS samt Inhalt UNWIDERBRINGLICH gelscht!
REM Mit DELTREE ohne Nachfrage!

REM Rettung: Eine MS-DOS-Batch- Datei kann an den Haltepunkten mit der
REM Tastenkombination 'STRG + C' abgebrochen werden


REM ACHTUNG:

REM Wird diese Batch-Datei mit CALL von einer anderen aufgerufen, werden
REM Unterverzeichnisse im Verzeichnis der AUFRUFENDEN Datei gelscht!

REM In diesem Fall wo notwendig absolute Pfadangaben wie 'C:\...' machen.
REM Bzw. mit 'CD C:\...' in das zu subernde Verzeichnis wechseln


REM ACHTUNG:

REM Kopierte Verzeichnisse erhalten immer das aktuelle Datum!
REM Sie sind also ggf. die jngsten.

REM Man lernt...






REM VORLAUF


:BACK1



echo.
echo Liste das aktuelle Verzeichnis nach Datum
REM echo - nur Verzeichnisse


REM Vor dem gewnschten 'set' REM entfernen

REM D  Lscht im Ergebnis das lteste Verzeichnis zuerst
set WAHL=D

REM -D Lscht im Ergebnis das jngste Verzeichnis zuerst
REM set WAHL=-D


REM VERZEICHNIS EINLESEN

REM Ggf. enthaltendes Verzeichnis angeben

CD C:\Ablage1\_SR32_~1


REM Ein Minus vor Verzeichnisnamen bewirkt ein berspringen in die Endlosschleife!

REM Lsung 1: Minus vor Datei Umbenennen in #
REM meldet ggf. "Datei nicht gefunden"

echo Benenne -* Verzeichnisse in #* um
REN -* #*


REM Meldung unterdrcken?
REM IF EXIST -* REN -* #*


DIR /A:D /O:%WAHL% /B> C:\Ablage1\_SR32_~1\Dir.txt


REM HOLT Dir.txt

copy C:\Ablage1\_SR32_~1\Dir.txt  C:\Ablage1\_SR32_~1\Inhalt.txt >nul

echo.
REM echo Inhalt der Eingabe:

echo _
type C:\Ablage1\_SR32_~1\Inhalt.txt
REM sort /R C:\Ablage1\_SR32_~1\Inhalt.txt

echo.
echo -
echo Ende Inhalt der Eingabe
echo.
echo. LOESCHT R&S BACKUP SICHERUNGEN
echo.
echo In der Loeschfolge

echo.
IF "%WAHL%"=="D" ECHO. AELTESTE ZUERST
IF "%WAHL%"=="-D" ECHO. JUENGSTE ZUERST
echo.


REM Ohne Lsung 1
REM IF Errorlevel 1 echo. !! FEHLER: Zu Loeschender Verzeichnisnamen beginnt mit '-'!

REM Mit Lsung 1
IF Errorlevel 1 echo. !! FEHLER: Doppelter Namen als Resultat einer '-' Umbenennung:
IF Errorlevel 1 echo. !! Ein Verzeichnis '-...' EXISTIERT BEREITS als '#...'!

REM Immer
IF Errorlevel 1 GOTO ENDE2



REM echo.
REM echo Der Vorlauf ist abgeschlossen
REM echo.

delay 4

REM PAUSE


REM Zum testen REM entfernen:
REM GOTO NEXT1








REM ----



REM Schreibe ins Zwischenlager ZW.bat

type C:\WINDOWS\COMMAND\kn_umbr1.bat>C:\Ablage1\_SR32_~1\ZW.bat


REM Liste die Zahl der Verzeichnisse
DIR | FIND "Verzeichnis(se)" | FIND /V ":" >> C:\Ablage1\_SR32_~1\ZW.bat


REM echo.
REM echo Holen der Variablen
REM echo.

REM PAUSE


REM Festlegen der gesuchten Variablen
echo set var1=%%1>C:\Ablage1\_SR32_~1\Hole.bat

REM Holen derselben
call C:\Ablage1\_SR32_~1\ZW.bat

REM echo.
REM echo Erkannte Variablen:
REM echo var1: '%var1%'
REM echo.

IF "%var1%"=="" echo. Variable 1 existiert nicht
IF "%var1%"=="" GOTO NEXT1

REM echo.

REM PAUSE

ECHO ERGEBNIS:


REM Maximal
REM Prfung der Anzahl der angezeigten Verzeichnisse

REM Plus 0 im Stammverzeichnis: Ein Unterverzeichnis = 1
REM Plus 2 im Unterverzeichnis: Ein Unterverzeichnis = 3

REM Plus 2 im Unterverzeichnis: 4 Unterverzeichnis = 6
REM 4 nehmen; Bei 5 sind beim Start vor dem lschen 6 offen - WRCK blockiert!
REM Gilt nicht fr R&S




REM ----




	REM !!WICHTIG!!



	REM RESTANZAHL X DER VERZEICHNISSE SORGFLTIG EINSTELLEN

	REM LETZTER HALT VOR DER ZERSTRUNG

	REM UNBEDINGT VON 0 (2) BIS INKLUSIVE X+2 ALLE EINTRAGEN


	IF %var1%==0 GOTO NEXT1
	IF %var1%==1 GOTO NEXT1
	IF %var1%==2 GOTO NEXT1
	IF %var1%==3 GOTO NEXT1
	IF %var1%==4 GOTO NEXT1
	IF %var1%==5 GOTO NEXT1
	IF %var1%==6 GOTO NEXT1
	IF %var1%==7 GOTO NEXT1
	IF %var1%==8 GOTO NEXT1
	IF %var1%==9 GOTO NEXT1


	REM Anzahl X und X+2 auch in NEXT1 eintragen

	echo.
	echo. Ausfuehrung
	echo.




REM ----



REM Eigentlich gehrt hier eine FOR-Schleife hin
REM Aber man kann mit den Variablen ja unterschiedliches anstellen



REM VERZEICHNISSE LSCHEN




REM Schreibe ins Zwischenlager ZW.bat

type C:\WINDOWS\COMMAND\kn_umbr2.bat>C:\Ablage1\_SR32_~1\ZW.bat


type C:\Ablage1\_SR32_~1\dir.txt >>C:\Ablage1\_SR32_~1\ZW.bat


REM Festlegen der gesuchten Variablen
echo set var2=%%1">C:\Ablage1\_SR32_~1\Hole.bat

REM Holen derselben
call ZW.bat

echo.
echo.
echo Zu loeschendes Verzeichnis:
echo var2: '%var2%'
echo.

IF "%var2%"=="" echo. Zu loeschendes Verzeichnis existiert nicht
IF "%var2%"=="" GOTO NEXT1


REM PAUSE

REM UND TSCHSS!

REM IF NOT "%var2%"=="" RMDIR %var2%
REM IF NOT "%var2%"=="" DELTREE %var2%


REM OHNE NACHFRAGE!



IF NOT "%var2%"=="" DELTREE /Y %var2%


echo.
IF Errorlevel 1 echo. Das Verzeichnis '%var2%' WURDE NICHT geloescht!
IF Errorlevel 0 echo. Das Verzeichnis '%var2%' wurde GELOESCHT!
echo.

IF NOT "%var2%"=="" GOTO BACK1


REM PAUSE





:NEXT1

echo.

REM X / X+2

IF %var1%==9 ECHO Noch 7 Unterverzeichnisse vorhanden

ECHO Keine zu loeschendenden Unterverzeichnisse erkannt!
echo.

delay 4


REM PAUSE

REM ABSCHLUSS




:ENDE1


echo.
echo Ende
echo.

REM Beseitigt Zwischenergebnisse:

del C:\Ablage1\_SR32_~1\Dir.txt
del C:\Ablage1\_SR32_~1\Inhalt.txt
del C:\Ablage1\_SR32_~1\Hole.bat
del C:\Ablage1\_SR32_~1\ZW.bat


REM RETURN:
CD C:\BackupGo


REM echo Schliesse in X Sekunden
delay 5

REM vor CLS entfernen
CLS

:ENDE2







