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
GELÖST

Batch an einem bestimmten Tag im Monat ausführen

Frage Entwicklung Batch & Shell

Mitglied: redolog

redolog (Level 1) - Jetzt verbinden

30.01.2009, aktualisiert 17:20 Uhr, 7618 Aufrufe, 12 Kommentare

Hallo zusammen,

Microsoft verteilt wie bekannt monatliche Updates (Patchday)
Bei uns werden diese nach Überprüfung auf TestServern am folgenden Sonntag nach dem zweiten Dienstag im Monat eingespielt (per WSUS).
Mein Ziel ist es, vor dieser Einspielung und dem danach folgenden Neustart bestimmte Dienste zu beenden.
Mittels dem AT-Befehl könnte ich jeden Tag eine Batch starten, die abfragt ob denn jetzt "ein Sonntag nach dem zweiten Dienstag im Monat ist" und dann vor der WSUS-Einspielung die entsprechenden Dienste beendet - doch wie stelle ich das fest, ob es dieser bestimmte Sonntag ist?

Würde mich über Anregungen und Beispiele sehr freuen.

Grüße an alle.
Mitglied: 45877
30.01.2009 um 16:52 Uhr
über geplante tasks kannst du doch einrichten, dass die batch jeden 3 sonntag im monat (oder wann auch immer) einmal gestartet werden soll..
Bitte warten ..
Mitglied: miniversum
30.01.2009 um 17:05 Uhr
Oder wenns genauer sien soll:
Per geplantem task am zweiten dienstag im monat den AT befehl starten und damit die ausführung auf den aktuellen tag +% setzen. Da das die Monatsgrnze nie überschreiten wird kansn tdu dann sogar die Addition um 5 Tage in Batch erledigen.
Bitte warten ..
Mitglied: redolog
30.01.2009 um 17:10 Uhr
..... nun ja, da hätte ich im Jahr 2009 bereits im Juni, September und Dezember ein Problem.

Es muß "der Sonntag" nach dem zweiten Dienstag sein!

Grüße .....
Bitte warten ..
Mitglied: bastla
30.01.2009 um 17:12 Uhr
Hallo redolog und willkommen im Forum!

Da der in Frage kommende Sonntag zwischen dem 13. und 19. eines Monats liegen muss, ließe sich das in einem Batch etwa so kontrollieren:
01.
@echo off & setlocal 
02.
 
03.
set /a Tag=%date:~-10,2% 
04.
if %Tag% lss 13 goto :eof 
05.
if %Tag% gtr 19 goto :eof 
06.
 
07.
set G=%temp%\GetWeekDay.vbs 
08.
>>%G% echo WScript.Echo WeekDayName(WeekDay(WScript.Arguments(0)),True) 
09.
for /f %%i in ('cscript //nologo %G% %date%') do set "WTag=%%i" 
10.
if /i "%WTag%" neq "So" goto :eof 
11.
 
12.
echo Updates installieren ...
Grüße
bastla

[Edit] @miniversum: Zweifellos eleganter ... [/Edit]
Bitte warten ..
Mitglied: redolog
30.01.2009 um 22:21 Uhr
.... sensationelle Lösungen - Besten Dank an bastla und miniversum !!!!

Problem gelöst ....
Bitte warten ..
Mitglied: Beatzler
31.01.2009 um 01:49 Uhr
Hey,

hätte nochmals ne kleine Frage bei der ich unterstützung bräuchte.

Habe die SuFu benutzt und bin auf diesen Thread hier gestossen da ich etwas ähnliches durchführen möchte.

ich brauche ein skript innerhalb einer Batch welches vorm ausführen einer weiteren batch prüft wie spät es aktuell ist ( systemzeit %time% am besten ? )

Die Prüfung soll verhindern das täglich ( egal welcher Tag ) z.b. ab 22 Uhr bis 8 Uhr morgens die nachfolgende Batch datei nicht gestartet wird !

Also sinngemäß so:

Batch läuft...
bei bestimmter Aktion kommt Abfrage ob es zwischen 22 Uhr und 8 Uhr ist
Falls JA dann goto ende
Falls NEiN goto start und dann wird halt die Batch gestartet ....


Habe nun mit dem obigen Quelltext schon ein wenig rumprobiert doch ich bekomm es nicht so recht hin bei %time% kommt ja z.B. 22:43:22,44 raus ... wie frage ich das am besten ab ?


Bin für jeden Tipp sehr dankbar !

Mit freundlichen Grüßen Beatzler
Bitte warten ..
Mitglied: miniversum
31.01.2009 um 09:48 Uhr
Das entsprechende zur oberen Lösung wäre dann so:
01.
@echo off 
02.
set Stunde=%time:~0,2% 
03.
set /a Stunde=%Stunde: =% 
04.
if %Stunde% lss 8 goto :eof  
05.
if %Stunde% gtr 22 goto :eof  
06.
 
07.
echo Starte die Batch
Bitte warten ..
Mitglied: bastla
31.01.2009 um 10:07 Uhr
@miniversum
Wenn es ohnehin eine Zahl werden soll, stört das Leerzeichen vor einstelligen Stundenzahlen gar nicht und es genügt
set /a Stunde=%time:~,2%
Grüße
bastla
Bitte warten ..
Mitglied: Beatzler
31.01.2009 um 16:21 Uhr
Hey,

super Vielen Dank funktioniert auch allerbest, so wie gewünscht!

Aber könntet ihr mir ggf. das ganze mal erläutern ? Ist soweit alles klar nur zeile 03 versteh ich nicht so ganz ..

set /a Stunde=%time:~,2%

wird hier die zweite stelle aus dem %time% befehl abgefragt? also z.B. 23:45:43,23 dann würde bei dieser Zeit die 3 von der 23 ausgewertet werden ??? wofür steht das ~, ?

Vielen Dank !
Bitte warten ..
Mitglied: miniversum
31.01.2009 um 16:28 Uhr
Es werden dieersten zwei zahlen, also die Stunden, "ausgeschnitten". Genaueres darüber findest du indem du in der Eingabeaufforderung
set /?
eingibst
Bitte warten ..
Mitglied: bastla
31.01.2009 um 16:28 Uhr
Hallo beatzler!

Vorweg: Mit "set /?" kannst Du die Details in der Onlinehilfe nachlesen ...

set /a Stunde=%time:~,2%
wird hier die zweite stelle aus dem %time% befehl abgefragt?
Es werden die ersten beiden Stellen (vor dem Komma steht kein Offset, es werden also keine Stellen übersprungen) der Uhrzeit als numerischer Wert in der Variablen %Stunde% gespeichert.

Grüße
bastla
Bitte warten ..
Mitglied: Beatzler
01.02.2009 um 02:32 Uhr
Hey,

ahh okay jaa das mit dem set /? hätte mir auch selber einfallen können :D

Vielen Dank nochmal an euch beide !!! Echt super !

Mit freundlichen Grüßen Beatzler
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

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

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...