Ich habe folgendes vor:
Situation:
Jana (ein Emailserver) speichert die Emails in Verzeichnissen mit dem Muster User1, User2,... und so weiter. IMAP Benutzer haben in diesem Ordner einen Unterordner "Trash", welcher dem Papierkorb im Outlook gleichgesetzt ist. Bei IMAP bleibt die komplette Verzeichnisstruktur auf dem Mailserver erhalten, also praktisch eine 1:1 Kopie der Verzeichnisse wie sie in Outlook und Co. angezeigt werden.
Nun gibt es User, die ihre gelöschten Emails nie aus dem Papierkorb empfangen. Im Konkreten Fall einer kleinen Firma mit 10 Mitarbeitern ist die Platte da recht schnell zugemüllt.
Folgende Überlegung:
Eine Batchdatei wird täglich um Mitternacht ausgeführt und prüft die Emailverzeichnisse bzw. die jeweiligen Postfach Ordner, ob im Papierkorb "trash" sich Dateien befinden und löscht diese.
Das ganze soll mit geloggt werden.
Das Problem
Die Batchdatei wird sehr lang, wenn man mit "cd" und "cd.." jedes einzelne Verzeichnis aufruft. Das ganze soll mit Variablen und einer Schlaufe vereinfacht werden.
Das soll schematisch geschehen
Batch Datei wird gestartet per Taskplaner Logeintrag mit Datum und Uhrzeit Counter wird auf 1 gesetzt prüfe ob Verzeichnis user1 vorhanden wenn ja Wechsel in Verzeichnis User1 (user%counter%) wenn kein user1 vorhanden erhöhe Counter um 1 und beginne von vorne prüfe ob verzeichnis trash existiert wenn ja wechsel ins verzeichnis trash wenn in* vorhanden lösche alle Dateien in* Logeintrag mit Datum, Uhrzeit User 1 wird aufgeräumt Logeintrag Datum Uhrzeit User1 ok Counter um 1 erhöhen Logeintrag Datum Uhrzeit user%counter% wird bereinigt wiederhole Prüfung / reinigung ... ... ... Logeintrag datum uhrzeit alle verzeichnisse überprüft
Alle Schritte sollen Zeile für Zeile in einer Logdatei mitprotokolliert werden.
Code-Beispiel
Im Moment habe ich folgenden Code, welcher aber nicht funktioniert, da der Verzeichnisname so nicht in der Variablen geändert werden kann, wie es scheint.
echo off
set counter=1
set maxcount=36
set user=user%counter%
cd\
rem cls
for /f "tokens=2,* Delims=/ " %%i in ('date /t') do set backdat=%%i%%j
rem cls
echo %date%, %time% - Start Optimierung Email Postfach >>c:\programme\jana2\logfiles\clean_emails.log
echo %date%, %time% - Start Optimierung Email Postfach
goto clean
:clean
set /a counter=%counter% + 1
if "%counter%" EQU "%maxcount%" goto ENDE
echo %date%, %time% - user%counter% wird optimiert >>c:\programme\jana2\logfiles\clean_emails.log
echo %date%, %time% - user%counter% wird optimiert
cd\
d:
cd data
cd emails
cd %user%counter%
if exist trash goto trash
if not exist trash goto clean
:trash
cd trash
echo %date% %time% - Postfach %user%counter%% wird ÂberprÂft
if exist in* del in* echo %date% %time% - %postfach% OK >>c:\programme\jana2\logfiles\clean_emails.log
echo %date% %time% - %user%counter%% OK
if not exist in*.* echo %date% %time% - %postfach% OK >>c:\programme\jana2\logfiles\clean_emails.log
echo %date% %time% - %user%counter%% OK
cd..
cd..
goto clean
:ende
echo %date%, %time% - Optimierung der Postf„cher abgeschlossen >>c:\programme\jana2\logfiles\clean_emails.log