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

Logfile mit CMD verarbeitet

Frage Entwicklung

Mitglied: Maik007

Maik007 (Level 1) - Jetzt verbinden

24.05.2014, aktualisiert 25.05.2014, 2012 Aufrufe, 6 Kommentare

Hallo,
ich taste mich gerade an Batch Dateien heran und habe nun folgende Fragestellung, die ich lösen möchte:

1. Ich möchte den CMD einer Aufgabe in einer Log Datei auswerfen

Dafür nutze ich folgendes:
#rem Logfile mit der Aufgabe schreiben
SCHTASKS /query /TN Test >C:\log.txt

Das funktioniert!

Der Inhalt sieht so aus:

Ordner: \
Aufgabenname N„chste Laufzeit Status
Test 25.05.2014 20:00:00 Bereit

2. Nun möchte ich die Uhrzeit nehmen (20:00:00) und die Minuten um 1 Hochzählen (20:01:00) und dann soll der Task genau mit dieser Uhrzeit aktualisiert werden.
Das bedeutet am nächsten Tag läuft der Task dann mit 20:01:00 und so weiter.

Der Befehl für die Uhrzeit ändern lautet:
SCHTASKS /change /TN Test /ST 20:01:00

Ich möchte aber, dass er 20:01:00 selber aus dem Logfile errechnet!

Ich hoffe, dass mir hier einer helfen kann, denn das ist für mich eine knifflige Aufgabe!
Mitglied: bastla
LÖSUNG 24.05.2014, aktualisiert 25.05.2014
Hallo Maik007 und willkommen im Forum!

Das Schreiben in eine Datei braucht's eigentlich nicht - es sollte genügen:
01.
@echo off & setlocal 
02.
set "Task=Test" 
03.
for /f "tokens=3-5 delims=: " %%a in ('SCHTASKS /query ^|findstr /ibc:"%Task% "') do set "Std=1%%a" & set "Min=1%%b" & set "Sek=%%c" 
04.
set /a Min+=1 
05.
if %Min% geq 160 ( 
06.
    set Min-=60 
07.
    set Std+=1 
08.
09.
if %Std% geq 124 set /a Std-=24 
10.
echo SCHTASKS /change /TN Test /ST %Std:~-2%:%Min:~-2%:%Sek%
Das "echo" am Beginn der Zeile 9 soll ein gefahrloses Testen ermöglichen, da so der Befehl nur angezeigt, aber nicht ausgeführt wird.

Kurz zum Ablauf:
Die Ausgabe von "SCHTASKS" wird zunächst gefiltert, sodass nur die relevante Zeile weiter bearbeitet wird. Diese Bearbeitung besteht im Zerlegen anhand der Trennzeichen ":" und Leerzeichen. Von den daraus resultierenden Teilen ("Tokens") werden Tokens 3 (Stunde = %%a), Token 4 (Minute = %%b) und Token 5 (Sekunde = %%c) benötigt und daher in Variablen gespeichert.

Für Stunde und Minute (mit denen gerechnet werden muss) wird noch eine "1" am Anfang hinzugefügt, sodass für die Uhrzeit "20:00:00" in den Variablen folgende Werte stehen:
in %Std% 120
in %Min% 100
in %Sek% 00

Der Sinn des Verschiebens der Werte in den Bereich ab 100 ist, dass so einerseits die führenden Nullen ("00" anstatt "0") erhalten bleiben und andererseits das "Oktalzahl-Problem" vermieden wird: Werte, die mit "0" beginnen, werden bei Berechnungen als Oktalzahlen interpretiert,, was für "00" bis "07" egal wäre, aber für "08" und "09" zu Fehlen führt, da dies keine gültigen Oktalzahlen wären.

Nach dem Erhöhen des Minutenwertes wird überprüft, ob 160 (also 60 Minuten) erreicht oder überschritten wären; falls ja, wird der Minutenwert um 60 verringert und die Stunde um 1 erhöht. Anschließend wird dann geprüft, ob sich daraus 124 (oder mehr) als Stundenwert ergeben hätte und ggf 24 abgezogen.

Um dann wieder auf die 2-stelligen Werte für Stunde und Minute zu kommen, werden Teilstrings (nur die letzten beiden Zeichen - siehe: set /?) der Variablen %Std% und %Min% verwendet, woduch die vorher am Anfang hinzugefügte "1" wieder wegfällt.

Grüße
bastla

[Edit] "SCHTASKS /query" vereinfacht [/Edit]
Bitte warten ..
Mitglied: Maik007
24.05.2014 um 22:10 Uhr
Vielen Dank. Das ist wirklich Hammer.
Mit dem Batch kann man richtig viel machen!
Das ist es Danke!
Bitte warten ..
Mitglied: Maik007
25.05.2014 um 10:59 Uhr
Hallo bastla,
das sieht eigentlich von Script sehr gut aus und ist nachvollziehbar. Erstmal vielen Dank für die sehr gute Erklärung. Nun habe ich das Script mal ausprobiert und bekomme nun folgende Meldung:

C:\Users\BOBO>@echo off & setlocal
set "Task=Test"
for /f "tokens=3-5 delims=: " %%a in ('SCHTASKS /query /TN %Task%^|findstr /ibc:
"%Task% "') do set "Std=1%%a" &
"%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

set "Min=1%%b" & set "Sek=%%c"
set /a Min+=1
2if %Min% geq 160 (
Mehr? set Min-=60
Mehr? set Std+=1
Mehr? )
If %Std% geq 124 set /a Std-=24
SCHTASKS /change /TN Test /ST %Std:~-2%:%Min:~-2%:%Sek%
FEHLER: Ungültiger Startzeitwert.
Pause

Die Eintstellungen vom Task sind diese:
test 25.05.2014 20:00:00 Bereit

Liegt das am Windows7 System? Ich wollte das Script unter meinem Windows 7 32 bit Professionell laufen lassen.

Habt ihr eine Idee was ich falsch mache? Vielen Dank schonmal vorab!
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.05.2014, aktualisiert um 17:51 Uhr
Hallo Maik,
Habt ihr eine Idee was ich falsch mache? Vielen Dank schonmal vorab!
du solltest das obige Script in einer Datei speichern und mit der Endung *.bat oder *.cmd versehen und dann ausführen, nicht einfach in das Konsolenfenster einfügen. Wenn du es auf der Konsole Schritt für Schritt eingeben willst, musst du alle doppelten Prozentzeichen(%%) der For-Schleifen-Variablen durch einfache(%) ersetzen.

Grüße Uwe
Bitte warten ..
Mitglied: Maik007
25.05.2014 um 14:34 Uhr
Vielen Dank, dass war es!

Darf ich noch eine blöde Frage stellen?

Wenn ich nun das Script ausführe, kommt nun diese Meldung:

FEHLER: Auf dem lokalen Computer sind Benutzeranmeldeinformationen nicht
zulässig.

System, Benutzer und Passwort mitgegeben.
Haken gesetzt höchste Prio
und UAC ausgeschaltet
Benutzer hat Admin Rechte
Volle Zugriffsrechte auf die Batch Datei

Verstehe nicht, warum die Meldung kommt! Scheint nun die letzte Hürde sein!
Bitte warten ..
Mitglied: Maik007
25.05.2014 um 17:51 Uhr
Hi,
fehler selber gefunden. Habe das nun nur über das System laufen lassen und schon funktioniert es! Also vielen Dank an alle! Ihr habt mir sehr geholfen!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Batch & Shell
gelöst Cmd Befehle in Powershell GUI aufrufen (5)

Frage von Markus2016 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...