Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Batchdatei mit Zähler

Empfohlene Antworten

Veröffentlicht

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

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?

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.