pat.sls
Goto Top

BATCH - Abfrage wenn ein bestimmter Task läuft unter einem bestimmten Benutzer gehe zu XY

Hi Leute,

ich bin neu hier und benötige Hilfe für ein Batch-Script...
Leider bin ich bei der Suche durchs Netz nicht fündig geworden, bzw. nicht schlau aus den Funden geworden...

Ich bin kein Fachmann, jedoch kümmer ich mich bei uns im Hause neben der normalen Arbeit um die Server
(Soweit es in Eigeninitiative möglich ist)

Übersicht:

Betriebssystem:
Windows Server 2008 Standard (x64)
Einsatz:
WTS Umfeld des Servers
Benutzeraccount:
Administrator."Domane"
Ziel des Batch-Scripts:
Datensicherung einer PST-Datei (Eine KEN!4-PST vom Organizer, unser Komunikationserver hat keine so Intensive Datensichrungsrotine, daher sollen die Einträge auf ein Laufwerk mit einer Rotine für Arbeitsdaten und die auf Wunsch der Geschäftsführung in PST mit 14 Tagen History)
Ablauf des Gesamtscripts:
-Beenden von der Outlook.exe
-Kopieren der Datei mit Datumsangabe
-Starten von Outlook
-Löschen von den Ordnern die älter als 14 Tage Tage sind
Art der Ausführung:
Taskplaner


Problem:

Das Problem habe ich bei der Abfrage ob der TASK "Outlook.exe" unter administrator.Domäne noch läuft
Das Script beendet Outlook per Taskkill und soll dann nach einem "WAIT" ( ping 127.0.0.1>nul ) überprüfen ob der TASK noch läuft, wenn er noch läuft soll ein GOTO auf WAIT gehen, dies verweist danach natürlich wieder auf die Abfrage...Wenn der TASK beendet ist soll er fortfahren...


Script:

echo off
title X^&Y Datensicherung KEN!4
REM
REM 	Strucktur des Scriptes:
REM		Arbeitsabläufe:
REM		Beenden von OUTLOOK mit Warteschleife ob OUTLOOK geschlossen ist
REM		Datensicherung selbst
REM		Starten von Outlook
REM		Löschen von Datensicherungen älter 14 Tage
REM 	GOTO:
REM		TASK = Überprüfung ob TASK OUTLOOK.exe läuft
REM		WAIT = Warteschleife
REM	Datenpfade
REM		Datensicherungsquelle:
		Set Quelle="C:\Users\administrator.Domäne"\AppData\Roaming\Microsoft\Outlook\1269842416ken.pst"  
REM		Datensicherungsziel:
		Set Ziel="N:\Datensicherung KEN\Backups\%date%"  
			REM Soweit der Datensicherungspfad geändert wird, muss er auch in VB-Script geändert werden
REM		Outlook
		Set Outlook="C:\Program Files (x86)\Microsoft Office\Office12\Microsoft Office Outlook 2007.lnk"  
			REM Verknüfung im Officeverzeichnis zum minimierten Starten
REM		Löschscript Sicherungen älter 14 Tage
		Set Delete-14="N:\Datensicherung KEN\Delete-14.vbs"  
REM		Windows Benutzer
		Set Benutzer="domäne/administrator"  
cls
echo ===============================================================================
echo.
echo XXX ^& YYY 
echo ZZZZZZZZZZZZZZZZZZZZZZZZ
echo.
echo Datensicherung KEN! Organizer
date /t
time /t
echo.
echo ===============================================================================
echo.
echo.
echo.
echo Beende Outlook...
taskkill /F /FI "USERNAME eq %Benutzer%" /IM OUTLOOK.exe >nul  
echo.
:TASK
REM ===============================================================================
REM Hier fehlt die Überprüfung ob der Task noch läuft und somit in die Warteschleife geleitet wird
pause
REM Zu testzecken "Pause" gesetzt  
REM ===============================================================================
echo.
md %Ziel%
echo.
echo Starte die Datensicherung...
xcopy %Quelle% %Ziel% /s /v /c /i /f /h /k /o /x /y
echo.
echo Starte Outlook...
start "" %Outlook%  
echo.
echo Loesche Datensicherungen die aelter als 14 Tage sind...
start "" %Delete-14%  
echo.
echo Fertig, das Programm beendet sich in etwa einer Minute...
ping 127.0.0.1 -n 60 >nul
exit
:WAIT
echo. 
echo Warte bis Outlook geschlossen ist...
ping 127.0.0.1>nul
goto :TASK

(X, Y & Z sind die ersetzte Firmenbezeichnung, sowie Domain wurde ersetzt)


Vielen Dank für die Hilfe!

Grüße PaT
Kommentar vom Moderator Biber am 05.05.2010 um 20:15:18 Uhr
Ich hätte absolut nichts dagegen, wenn häufiger Fragen so sorgfältig formuliert wären wie dieser Beitrag.

Problem und Lösung sind für jeden späteren Mitleser klar verständlich ... vielen Dank, PaT!

Grüße
Biber

Content-Key: 142197

Url: https://administrator.de/contentid/142197

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: AndreasHoster
AndreasHoster 05.05.2010 um 14:53:19 Uhr
Goto Top
Mit Tasklist nachschauen?
tasklist /fi "USERNAME eq %Benutzer%" | find "outlook.exe" /i  
if errorlevel 1 goto KeinOutlook
goto Wait
:KeinOutlook
Mitglied: PaT.sls
PaT.sls 05.05.2010 um 16:13:33 Uhr
Goto Top
Zitat von @AndreasHoster:
Mit Tasklist nachschauen?

Danke face-smile , ich bin eben auch schon auf tasklist bekommen, aber noch nicht auf die Lösung...da kenne ich mich einfach zu wenig aus...
Es funktioniert face-smile

Grüße PaT

Für die die es Interressiert und das Script gebrauchen können...hier die Endversion

KEN-Backup.bat
echo off
title X^&Y Datensicherung KEN!4
REM
REM 	Strucktur des Scriptes:
REM		Arbeitsabläufe:
REM			Beenden von OUTLOOK mit Warteschleife ob OUTLOOK geschlossen ist
REM			Datensicherung selbst
REM			Starten von Outlook
REM			Löschen von Datensicherungen älter 14 Tage
REM 		GOTO:
REM			TASK 	= Überprüfung ob TASK OUTLOOK.exe läuft
REM			BEENDET	= Programm ist Beendet und das Datensicherung fährt fort
REM		Datenpfade:
REM			Datensicherungsquelle:
				Set Quelle="C:\Users\administrator.Domäne\AppData\Roaming\Microsoft\Outlook\1269842416ken.pst"  
REM			Datensicherungsziel:
				Set Ziel="N:\Datensicherung KEN\Backups\%date%"  
REM 					Soweit der Datensicherungspfad geändert wird, muss er auch in VB-Script geändert werden
REM			Programpfad
				Set Programpfad="C:\Program Files (x86)\Microsoft Office\Office12\Microsoft Office Outlook 2007.lnk"  
REM					Verknüfung im Officeverzeichnis zum minimierten Starten
REM			Program
				Set Program=OUTLOOK
REM			Löschscript Sicherungen älter 14 Tage
				Set Delete-14="N:\Datensicherung KEN\Delete-14.vbs"  
REM			Windows Benutzer
				Set Benutzer="DOMÄNE\administrator"	  
cls
echo ===============================================================================
echo.
echo XXX ^& YYY
echo ZZZZZZZZZZZZ
echo.
echo Datensicherung KEN! Organizer
date /t
time /t
echo.
echo ===============================================================================
echo.
echo.
echo.
echo Beende %Program%...
	
:TASK
tasklist /fi "USERNAME eq %Benutzer%" | find "%Program%.exe" /i   
if errorlevel 1 goto BEENDET
echo. 
echo Warte bis %Program% geschlossen ist...
ping 127.0.0.1>nul
goto :TASK
:BEENDET
echo.
echo Datenpfad wird angelegt...
md %Ziel%
echo.
echo Starte die Datensicherung...
xcopy %Quelle% %Ziel% /s /v /c /i /f /h /k /o /x /y
echo.
echo Starte %Program%...
start "" %Programpfad%  
echo.
echo Loesche Datensicherungen die Aelter als 14 Tage sind...
start "" %Delete-14%  
echo.
echo Fertig, das Programm beendet sich in etwa einer Minute...
ping 127.0.0.1 -n 60 >nul
exit

Hier noch das VB-Script
(Quelle: http://www.mcseboard.de/windows-forum-scripting-71/ordner-batch-xx-tage ..)

delete-14.vbs
strRootFolder = "N:\Datensicherung KEN\Backups"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set ofolder = fso.GetFolder(strRootFolder)

'Durchlaufe alle Unterverzeichnisse  
for each folder in ofolder.subfolders
  KillFolderSub folder
next


Sub KillfolderSub(objFolder)

  'Durchlaufe alle Unterverzeichnisse  
  for each subfolder in objfolder.subfolders
    KillFolderSub subfolder
  next

  'Wenn Ordner vor mehr als 14 Tagen erstellt wurde...  
  if objFolder.datecreated < (Date - 14) then

    'Alle Dateien im Ordner löschen  
    for each file in objfolder.Files
      fso.DeleteFile(file.Path)
    next

    'Ordner löschen  
    fso.DeleteFolder(objFolder.Path)
  end if

End Sub