Zum Inhalt springen

Batchdatei mit Zähler


djmugge

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von Thombo
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...