Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

schtasks.exe - Abfrage eingestellter Tasks und Rückgabe ob vorhanden

Anleitung Entwicklung Batch & Shell

Mitglied: DonSm00chY

DonSm00chY (Level 1) - Jetzt verbinden

22.03.2007, aktualisiert 31.03.2007, 21356 Aufrufe, 3 Kommentare

In Anlehnung an mein älteres Problem schließt sich nun ein Weiteres an.

Grob gesagt geht es jetzt um folgendes:

Ich möchte auf x Rechner eine Abfrage vorhandener Tasks machen. Sollte ein Task mit einem bestimmten Namen vorhanden sein, soll ein erfolgreich ausgegeben werden, wenn nicht, eine negative Ausgabe (eine einfache Echo-Ausgabe reicht hier).

Welche Rechner abgefragt werden sollen, werden wieder aus der Config-Datei "hosts.txt" abgefragt. Der Inhalt der Datei sieht (vereinfacht - es gibt dann noch mehr Server) folgendermaßen aus:

01.
:: *********************************************** 
02.
:: *    NTBackup-Script               (V4.0)     * 
03.
:: *         André F.     - dladfen              * 
04.
:: *********************************************** 
05.
:: *---------------------------------------------* 
06.
:: *********************************************** 
07.
:: * Configfile fuer NTBackup-Script             * 
08.
:: * Aufbau:                                     * 
09.
:: * A#B#C#D#E#F                                 * 
10.
:: * A = Hostname                                * 
11.
:: * B = lokales Backuplaufwerk (OHNE ":" !!!)   * 
12.
:: * C = zu verwendende bks Datei im bks Ordner  * 
13.
:: * D = Sprachversion des Betriebssystems       * 
14.
:: * E = Wochentag (MON TUE WED THU FRI SAT SUN) * 
15.
:: * F = Uhrzeit                                 * 
16.
:: * Genaue Beschreibungen siehe Dokumentation!  * 
17.
:: *********************************************** 
18.
GMDDDDCMA210#e#CMA210.bks#de#MON#12:00 
19.
GMDDDDS00IN1#m#S00IN1.bks#de#SUN#15:00
Der Code der Batch schaut folgendermaßen aus. Es steht normalerweise alles in einer Datei. Allerdings schaffe ich es nicht, in einem Code-Block noch weitere Formatierungen wie zb Fett oder Farbe hereinzubekommen. (Die Zeilenumbrüche stimmen alle im Script, werden nur hier durch die Glossar-Einschiebungen verwurschtelt).

01.
@echo off 
02.
cls 
03.
@title Schedulescript fuer NTBackup - Andre F. - dladfen 
04.
::*********************************************** 
05.
::* Schedulescript fuer NTBackup-Script (v 4.0) * 
06.
::*             Andre F.     - dladfen          * 
07.
::*********************************************** 
08.
 
09.
 
10.
:: *********************************** 
11.
:: ******          GUI          ****** 
12.
:: *********************************** 
13.
:: *---------------------------------* 
14.
:: *********************************** 
15.
:: * Erklaerung:                     * 
16.
:: * Auflistung der in der Hosts.txt * 
17.
:: * eingetragenen Rechner und die   * 
18.
:: * Benutzerabfrage                 * 
19.
:: *********************************** 
20.
 
21.
@ECHO Auf welche Rechner soll der Task eingestellt werden? 
22.
@ECHO. 
23.
@ECHO. 
24.
@ECHO [ALLE] - Auf alle untenstehende Server 
25.
@ECHO. 
26.
for /f "tokens=1,2,5,6 delims=# skip=17" %%a in (hosts.txt) do ( 
27.
	ECHO [%%a] - Nur auf %%a fuer %%c %%d Uhr 
28.
29.
@ECHO. 
30.
@ECHO [KEINEN] - bricht den Vorgang ab 
31.
@ECHO. 
32.
 
33.
set /p Auswahl=Bitte den "HOSTNAMEN", "ALLE" oder "KEINEN" eingeben (GROSSSCHREIBUNG beachten!): 
34.
 
35.
@ECHO Vom Benutzer getroffene Auswahl: %auswahl% > Schedule_Log.txt 
36.
@ECHO. 
37.
 
38.
 
39.
:: ***************************************** 
40.
:: ******           Auswahl           ****** 
41.
:: ***************************************** 
42.
:: *---------------------------------------* 
43.
:: ***************************************** 
44.
:: * Erklaerung:                           * 
45.
:: * Anhand der Eingabe des Users wird     * 
46.
:: * entschieden, welche Abarbeitung folgt * 
47.
:: ***************************************** 
48.
 
49.
set InstalledSuccessfully=0 
50.
set InstalledAllSuccessfully=0 
51.
IF %Auswahl% == ALLE ( 
52.
   GOTO Alle 
53.
) ELSE IF %Auswahl% == KEINEN ( 
54.
   GOTO Keinen 
55.
) ELSE ( 
56.
       for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
57.
                    IF %auswahl% == %%a ( 
58.
                        GOTO Server 
59.
                    )        
60.
61.
      	GOTO Fehler 
62.
63.
      	 
64.
 
65.
 
66.
:: ****************************************** 
67.
:: ******      Einzelner Server        ****** 
68.
:: ****************************************** 
69.
:: *----------------------------------------* 
70.
:: ****************************************** 
71.
:: * Erklaerung:                            * 
72.
:: * Bei der Eingabe eines einzelnen        * 
73.
:: * Hostnamen wird dieser Teil ausgefuehrt * 
74.
:: ****************************************** 
75.
 
76.
:server 
77.
for /f "tokens=1,2,5,6 delims=#" %%a in ('findstr %Auswahl% hosts.txt') do ( 
78.
	IF EXIST \\%auswahl%\%%b$\backup\backup.cmd ( 
79.
		(schtasks /create /s %auswahl% /F /tn "NTBackup per Script" /tr %%b:\backup\backup.cmd /sc weekly /d %%c /st %%d /ru Benutzername /rp Benutzerpasswort) 
80.
	) ELSE ( 
81.
		GOTO EchoStatus 
82.
83.
84.
goto QueryServer 
85.
 
86.
 
87.
:: ******************************** 
88.
:: ******    Alle Server     ****** 
89.
:: ******************************** 
90.
:: *------------------------------* 
91.
:: ******************************** 
92.
:: * Erklaerung:                  * 
93.
:: * Bei der Eingabe von ALLE     * 
94.
:: * wird dieser Teil ausgefuehrt * 
95.
:: ******************************** 
96.
 
97.
:Alle 
98.
for /f "tokens=1,2,5,6 delims=# skip=17" %%a in (hosts.txt) do ( 
99.
	IF EXIST \\%%a\%%b$\backup\backup.cmd ( 
100.
		(schtasks /create /s %%a /F /tn "NTBackup per Script" /tr %%b:\backup\backup.cmd /sc weekly /d %%c /st %%d /ru //Benutzername// /rp //Benutzerpasswort//) 
101.
	) ELSE ( 
102.
		GOTO EchoStatusAll 
103.
104.
105.
GOTO QueryAll 
106.
 
107.
 
108.
:: *********************************** 
109.
:: ******    Statusabfragen     ****** 
110.
:: *********************************** 
111.
:: *---------------------------------* 
112.
:: *********************************** 
113.
:: * Erklaerung:                     * 
114.
:: * Hier erfolgt die Abfrage, ob    * 
115.
:: * ein Task auf dem Server einge-  * 
116.
:: * stellt ist oder nicht.          * 
117.
:: *********************************** 
118.
 
119.
:QueryServer 
120.
schtasks /query /s %auswahl% /FO List > Schtasks_temp.txt 
121.
goto CheckForSuccess 
122.
 
123.
:CheckForSuccess 
124.
for /f "tokens=1,2 delims=:" %%a in ('findstr "NTBackup per Script" Schtasks_temp.txt') do ( 
125.
	set InstalledSuccessfully=1 
126.
127.
goto EchoStatus 
128.
 
129.
:EchoStatus 
130.
IF %InstalledSuccessfully% == 1 ( 
131.
	@ECHO Backupscript war auf %auswahl% vorhanden und Zeitplan wurde erfolgreich eingestellt. >> Schedule_Log.txt 
132.
	@ECHO Backupscript war auf %auswahl% vorhanden und Zeitplan wurde erfolgreich eingestellt. 
133.
	) ELSE ( 
134.
		@ECHO Backupscript auf %auswahl% nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden. >> Schedule_Log.txt 
135.
		@ECHO Backupscript auf %auswahl% nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden. 
136.
137.
goto EndofFile

Dieser Teil funktioniert nicht!!
01.
:QueryAll 
02.
for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
03.
	schtasks /query /s %%a /FO List >> Schtasks_temp.txt 
04.
05.
goto CheckForSuccessAll 
06.
 
07.
 
08.
 
09.
:CheckForSuccessAll 
10.
for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
11.
	set IsInFile=%%a 
12.
13.
for /f "tokens=1,2 delims=:" %%a in ('findstr "%IsInFile%" Schtasks_temp.txt') do ( 
14.
	for /f "tokens=1,2 delims=:" %%a in ('findstr "NTBackup per Script" Schtasks_temp.txt') do ( 
15.
		set InstalledAllSuccessfully=2 
16.
17.
18.
goto EchoStatusAll 
19.
 
20.
:EchoStatusAll 
21.
for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
22.
	IF %InstalledAllSuccessfully% == 2 ( 
23.
		@ECHO Backupscript war auf %%a vorhanden und Zeitplan wurde erfolgreich eingestellt. >> Schedule_Log.txt 
24.
		@ECHO Backupscript war auf %%a vorhanden und Zeitplan wurde erfolgreich eingestellt. 
25.
	) ELSE ( 
26.
		@ECHO Backupscript auf %%a nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden. >> Schedule_Log.txt 
27.
		@ECHO Backupscript auf %%a nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden. 
28.
29.
30.
goto EndOfFile


Das hier funktioniert wieder.
01.
:: ******************************** 
02.
:: ******    Kein Server     ****** 
03.
:: ******************************** 
04.
:: *------------------------------* 
05.
:: ******************************** 
06.
:: * Erklaerung:                  * 
07.
:: * Bei der Eingabe von KEINEN   * 
08.
:: * wird dieser Teil ausgefuehrt * 
09.
:: ******************************** 
10.
 
11.
:keinen 
12.
@ECHO Task wurde auf keinen Rechner eingestellt. 
13.
@ECHO Task wurde auf keinen Rechner eingestellt. >> Schedule_Log.txt 
14.
GOTO EndOfFile 
15.
 
16.
 
17.
:: ********************************* 
18.
:: ******  Falsche Eingabe   ******* 
19.
:: ********************************* 
20.
:: *-------------------------------* 
21.
:: ********************************* 
22.
:: * Erklaerung:                   * 
23.
:: * Bei der fehlerhaften Eingabe  * 
24.
:: * eines Namens wird dieser Teil *  
25.
:: * ausgefuehrt                   * 
26.
:: ********************************* 
27.
 
28.
:Fehler 
29.
@ECHO Eingegebener Name ist kein gueltiger Hostname! 
30.
@ECHO Eingegebener Name ist kein gueltiger Hostname! >> Schedule_Log.txt 
31.
goto EndOfFile 
32.
 
33.
 
34.
 
35.
 
36.
:EndofFile 
37.
del Schtasks_Temp.txt 
38.
@title %ComSpec%

Der Inhalt der Schtask_temp.txt sieht folgendermaßen aus, wenn auf beiden Rechnern der Task eingestellt ist:

01.
 
02.
HostName:      GMDDDDCMA210 
03.
TaskName:      NTBackup per Script 
04.
Next Run Time: 12:00:00, 26.03.2007 
05.
Status:         
06.
 
07.
HostName:      GMDDDDS00IN1 
08.
TaskName:      FreePDF Assistent 
09.
Next Run Time: At system start up 
10.
Status:        Running 
11.
 
12.
HostName:      GMDDDDS00IN1 
13.
TaskName:      NTBackup per Script 
14.
Next Run Time: 15:00:00, 25.03.2007 
15.
Status:         
16.
 
Sollte der Task auf einem der beiden Server fehlen (beispielsweise auf GMDDDDCMA210), schaut es folgendermaßen aus:

01.
INFO: There are no scheduled tasks present in the system. 
02.
 
03.
HostName:      GMDDDDS00IN1 
04.
TaskName:      FreePDF Assistent 
05.
Next Run Time: At system start up 
06.
Status:        Running 
07.
 
08.
HostName:      GMDDDDS00IN1 
09.
TaskName:      NTBackup per Script 
10.
Next Run Time: 15:00:00, 25.03.2007 
11.
Status:         
12.
 
Angedacht war nun folgende Vorgehensweise, die ich leider so noch nicht hinbekommen habe:

1. Er durchsucht die Schedule_temp.txt, ob folgende Textpassage in der Datei vorhanden ist:
01.
HostName:      HOSTNAME 
02.
TaskName:      NTBackup per Script
"HOSTNAME" muss dabei natürlich durch einen Wert aus Spalte A aus der Hosts.txt ersetzt werden. Sollte diese Textpassage so vorhanden sein, ist der Task erfolgreich auf dem Rechner eingestellt worden. Wenn nicht vorhanden, halt nicht erfolgreich.

Ich sitz nun seit 2 Tagen an diesem Problem, hab mehrere Möglichkeiten ausprobiert (mit einfachem errorlevel-abfragen angefangen), aber nichts will so richtig klappen.

Wär super, wenn einer von euch ne Idee hätte.

Danke im Voraus, smoo

/edit: Zu den Rückgaben:

1. Ist der Task auf allen Rechnern vorhanden kommt korrekterweise

Backupscript war auf GMDDDDCMA210 vorhanden und Zeitplan wurde erfolgreich eingestellt.
Backupscript war auf GMDDDDS00IN1 vorhanden und Zeitplan wurde erfolgreich eingestellt.

zurück. Fehlt er jetzt aber nur auf einem (der beiden) Server lautet die Ausgabe

Backupscript auf GMDDDDCMA210 nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden.
Backupscript auf GMDDDDS00IN1 nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden.

Task ist aber definitiv auf dem GMDDDDS00IN1 vorhanden.
Mitglied: DonSm00chY
23.03.2007 um 17:20 Uhr
So, hab nun folgende Lösung gefunden:

01.
:QueryAll 
02.
for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
03.
	schtasks /query /s %%a /FO LIST > %%a.txt 
04.
05.
goto CheckForSuccessAll 
06.
 
07.
 
08.
:CheckForSuccessAll 
09.
for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
10.
	for /f "tokens=2 delims=:" %%b in ('findstr "NTBackup per Script" %%a.txt') do ( 
11.
		@ECHO Backupscript war auf %%a vorhanden und Zeitplan wurde erfolgreich eingestellt. >> Schedule_Log.txt 
12.
		@ECHO Backupscript war auf %%a vorhanden und Zeitplan wurde erfolgreich eingestellt. 
13.
		del %%a.txt 
14.
	)	 
15.
16.
for /f "tokens=1 delims=# skip=17" %%a in (hosts.txt) do ( 
17.
	IF EXIST %%a.txt ( 
18.
		@ECHO Backupscript auf %%a nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden. >> Schedule_Log.txt 
19.
		@ECHO Backupscript auf %%a nicht vorhanden bzw. Zeitplan konnte nicht eingestellt werden. 
20.
	del %%a.txt 
21.
22.
23.
goto EndOfFile
Nächstes mal werd ich ne Woche drüber nachgrübeln, bevor ich was schreibe ;)

Status auf gelöst, viele Grüße an den schließenden Biber, dessen Beiträge mir hier schon oft geholfen haben.

Schönes Wochenende, smoo
Bitte warten ..
Mitglied: Biber
23.03.2007 um 18:04 Uhr
Danke Dir, DonSm00chY,

für die Blumen und im Namen aller für das Veröffentlichen Deines Beitrags.

Nach den vielen Schnarchhähnen der letzten Wochen mit Gestammel wie "eingeschrängte Nutzer", "windoes serve lizens" und "persöhnlichen Ordnern" sind solche Threads eine Wohltat fürs Auge und fürs Forum.

Deshalb schliesse ich den Beitrag nicht, sondern stufe ihn mal um zum Tutorial.

Danke und schönes Wochenende

Biber
Bitte warten ..
Mitglied: Guenni
31.03.2007 um 14:01 Uhr
@Biber

Hi,

Nach den vielen Schnarchhähnen der letzten Wochen mit Gestammel wie "eingeschrängte Nutzer",
"windoes serve lizens" und "persöhnlichen Ordnern" sind solche Threads eine Wohltat fürs Auge und fürs Forum.

Meinst du so Schnarchhähne, wie diesen hier.....

<Beitrag>
bitte helfen ich hab kein plan !!


also ich möchte ein netzwerk zuhause mit 2 rechern herstellen !! so das wir sachen hin und her schicken können !! und auch austauschne !!

also das heist ich möchte das soo machen wir haben halt einen rechner bei mir stehen mit i-net an schluss und einem im wohnzimmer ohne i-net mein vater will dakeins und ich will beide rechner mit einem kabel so verbinden das wir datein ins netzwerk rein tuhen können und das mein vater sich die dann ankucken, hören oder rüberzieghen können und andersrum auch !! ich hab ein t-dsl modem und einen 8 HUb und ich will das damit irghendwie machen !!geht das überhaupt ???????? wenn ja bitte bitte helft mir ich verzweifel sonst ich hab schon alles versucht !! und wenn ihr mir helkfen könnt könnt ich mir das genau erklären ohne fachgesimpel ich hab da kein plan vonn kann nur zocken daswars ! !! alsp pleas pimp my PC !! bitte bitte !!

Thx imvoraus !!
</Beitrag>

Vielleicht sollte man Scholl dazu anregen, noch eine Rubrik "Hitparade" oder "Zitrone des Monats"
mit Abstimmfunktion anzulegen. Da kann man sich am Wochenende amüsieren und erholen von "Standart",
"Hacken setzen","windoes serve lizens","Kann ich meine Freundin mit einer Batch zum S.. bewegen" etc.

vIeLLeichT FIndeT sihc der nei ode andeRE Standart-Use daRIN wider, und unterläßt es in Zukunft, derartige Beiträge zu schreiben.

Grüße, schönes WE
Günni
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
gelöst Row Number bei einer Abfrage sinnvoll einsetzen (1)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...