djmugge Geschrieben 4. Oktober 2009 Teilen Geschrieben 4. Oktober 2009 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 TaskplanerLogeintrag mit Datum und UhrzeitCounter wird auf 1 gesetztprüfe ob Verzeichnis user1 vorhandenwenn ja Wechsel in Verzeichnis User1 (user%counter%)wenn kein user1 vorhanden erhöhe Counter um 1 und beginne von vorneprüfe ob verzeichnis trash existiertwenn ja wechsel ins verzeichnis trashwenn in* vorhanden lösche alle Dateien in*Logeintrag mit Datum, Uhrzeit User 1 wird aufgeräumtLogeintrag Datum Uhrzeit User1 okCounter um 1 erhöhenLogeintrag Datum Uhrzeit user%counter% wird bereinigtwiederhole 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 5. Oktober 2009 Teilen Geschrieben 5. Oktober 2009 Ich würde erstmal alle User-Pfad, die einen Trash-Ordner besitzen in eine Datei schreiben und die dann mittels For-Schleife auslesen und jeden Datensatz abarbeiten. Woher nimmst du dir denn das Recht, die E-Mails von Mitarbeitern zu löschen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
djmugge Geschrieben 5. Oktober 2009 Autor Teilen Geschrieben 5. Oktober 2009 Woher nimmst du dir denn das Recht, die E-Mails von Mitarbeitern zu löschen? Das Recht die von Mitarbeitern gelöschten, aber nicht aus dem Papierkorb des Mailclients entfernten Mails zu löschen. Das prüfe ich gerade, inwieweit das rechtlich abgesegnet ist. Aber das ist eine andere Abteilung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Thombo Geschrieben 5. Oktober 2009 Teilen Geschrieben 5. Oktober 2009 (bearbeitet) Kleiner Denkanstoß: Angenommen folgende Struktur: C:\Programme\Jana\User1 C:\Programme\Jana\User2 C:\Programme\Jana\User3 @echo off c: cd\ cd C:\Programme\Jana\ for /F %%i in ('dir /b') do call :sub %%i goto ende :sub if exist C:\Programme\Jana\%1\trash ( echo %DATE% - %time:~0,5% - C:\Programme\Jana\%1\trash gefunden rd /s /q C:\Programme\Jana\%1\trash echo %DATE% - %time:~0,5% - C:\Programme\Jana\%1\trash GELÖSCHT ) else ( echo %DATE% - %time:~0,5% - C:\Programme\Jana\%1\trash NICHT GEFUNDEN!! ) goto :eof :ende Bearbeitet 5. Oktober 2009 von Thombo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.