Top-Themen

Aktuelle Themen (A bis Z)

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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst GET-DATE-TIME-G von Biber auch mit AM PM Amerikanischen Zeiten mit AM PM in deutschen 24 Stunden umwandeln

Mitglied: mycroftone

mycroftone (Level 1) - Jetzt verbinden

16.07.2009, aktualisiert 18:28 Uhr, 5933 Aufrufe, 9 Kommentare

Hallo Biber dein Kommentar mann kann auch dir ausgaben übergeben und umwandeln hat zu folgenden Script verleitet.

Ich bekomme logdateien von Verzeichnissen aus der ganzen Welt auch welch hinter dennen AP oder PM steht.

Jetzt habe ich nach dem Script vom Biber GET-DATE-TIME-G noch eine kleine ergänzung geschrieben aber eigentlich wollte ich es in der Subroutine haben .

Aber erste versuche scheiterten


Dieser Quellcode funktioniert.
Jetzt habe ich ihn wie folgt in die Subroutine eingebaut.


Bekomme aber die Fehlermeldung

Fehlere Operator


Also was mache ich falsch

biber du solltest dich doch mit deinem Code an besten auskenne
Mitglied: Biber
17.07.2009 um 00:34 Uhr
Moin mycroftone,

soweit ich es nachvollziehen kann, ist es für Dich doch gar nicht nötig, meinen Datumszerbröselschnipsel aufzurufen.
Bzw. ich sehe 3 mögliche Strategien.

Strategie a) Du machst alles in Deiner Batch - ohne aufwändige Datumszerlege-Subroutine
Die Konvertierung Deiner catalogo milano-Textdatei bekommst Du doch problemlos mit Deinem eigenen Schnipsel hin.

Bzw. die kleine Arbeit, die ich Dir dadurch abnehme, dass ich die "Stunden" schon als Variable %hh% liefere...
Ja hey! das bekommen wir auch mit einer viel viel kleineren FOR /F Anweisung hin.

Poste doch mal bitte 3 oder 5 Zeilen Deiner Mailänder DIR-Liste, und darunter den Soll-Output, dann entwickeln wir das hier.

Strategie b) Deine Batchdatei ruft "meine" Batchdatei.
Nächstdümmere Alternative wäre, die GetAllDateTimeInfos.bat als (separate) Batchdatei aufzurufen,
diese aber um einen optionalen dritten Parameter (AM_PM) zu erweitern... [unterstellt, dass in 95%der Fälle auch nur "AM" und "PM" drinstehen.].
Denn das Umrechnen auf 24h-Format (sprich: ggf. 12 Stunden addieren, wenn es nach dem Frühstück ist), das wäre ja genau das, was der Schnipsel vorgegeben hat leisten zu können ("beliebige Datums-/Zeitformate zu vereinheitlichen")

Strategie c)
Allerdings würde bei einer Umwidmung der bisher eigenständigen Batchdatei zu einer geCALLten Unterroutine (also Deinem eigentlichen Ziel)möglicherweise ein bisschen mehr zu ändern und zu testen sein (insbesondere die Mimik mit globalen/lokalen Veriablen.

Strategie A) erscheint mir die einfachste für diese Aufgabe.
Strategie B) hat den Reiz, die GetAllDateTimeInfos.bat noch um diese AM/PM-Erkennung zu erweitern.... okay.
Ist aber für Dein Vorhaben auch total überdimensioniert.

--> von C) würde ich abraten... da ist der Aufwand nicht vertretbar.
Und es läuft meiner Absicht zuwider, auch mal wiederverwendbare/allgemein verwendbare Beispielschnipsel zu posten.

Lass uns doch mal A (oder wenn nix im Fernsehen kommt auch B) versuchen.
Siehe oben:
Poste doch mal bitte 3 oder 5 Zeilen Deiner Mailänder DIR-Liste, und darunter den Soll-Output, dann entwickeln wir das hier.


Grüße
Biber
Bitte warten ..
Mitglied: mycroftone
17.07.2009 um 14:52 Uhr
Moin biber, gestern abend ging nicht das Fernsehprogramm sondern Kind und Frau vor

Also zum Sachverhalt.

Ich bekomme aus Indien folgende dir Ausgaben

07/17/2009 12:46 AM <DIR> PROD_Archiv_0309_
07/19/2009 11:45 PM <DIR> PROD_Archiv_0509_
07/18/2009 04:45 PM <DIR> PROD_Archiv_0609_

Und aus Russland folgende dir Ausgabe

06.02.2008 16:02 <DIR> PROD_DATA_1007_
06.03.2008 23:02 <DIR> PROD_DATA_1107_
06.04.2008 11:02 <DIR> PROD_DATA_0907_


Alles zusammen kommt dann in folgende Logdatei

Indien PROD_Archiv_0309_ vom 17.7.2009 12:46
Indien PROD_Archiv_0509_ vom 19.7.2009 23:45
Indien PROD_Archiv_0609_ vom 18.7.2009 16:45
Russland PROD_DATA_1007_ vom 06.02.2008 16:02
Russland PROD_DATA_1107_ vom 06.03.2008 23:02
Russland PROD_DATA_0907_ vom 06.04.2008 11:02

Das ist der erste Schritt anhand der dir Ausgaben aus den Ländern herauszufinden wann wer welche Produktiv Pakete heruntergeladen hat.

Später will ich das noch verfeinern und anhand von Logdatein in dennen steht Installation Ok zu verfizieren ob die Pakete auch richtig angekommen sind.
Aber auch dor gibt es Zeitstempel in form von 06.04.2008 11:02 und 07/18/2009 04:45 PM

Deswegen wollte ich es gleich in die subroutine einbauen. Damit ich die Später nur noch nehmen muß.

Mein Post oben deiner GET-DATE-TIME-G Routine mit den Implementierten teilen von mir
in der ich die Fehlermeldung *Fehlender Operator* bekomme
ist ja eine eigene Batchdatei wir können also gerne deinen Strategie 2 verfolgen.


Zu den Problemen die du in Strategier 3 siehst kann ich gar nix sagen dazu bin ich noch zu wenig in der Batch Programmierung eingearbeitet.


Was mir aber noch zu Strategie 2 einfällt ist ich habe nur bei mir getestet wenn die drei Werte "Datum" "Zeit" "AM/PM" übergeben werden.

Aber nicht wenn time/T auch eine Ausgabe in Form von 11:02 PM ausgibt.


Wenn du aber meinst du willst hier keine Batchsnipsel Posten die Allgemeingültig von jeden verwendet werden können dann köönen wir auch gerne diesesn Thead schließen das war nähmlich vordringlich meine betreben mit dem Post hier.

Auch wenn ich es Cool finden würde so eine Subroutine / eine eigen Batch Datei dafür zu haben.
Weil das Problem mit den unterschiedlichen Zeitformaten wird es immer geben.
Ich denke dafür hast du ja auch die Subroutine hier gepostet.
Bitte warten ..
Mitglied: Biber
17.07.2009 um 18:13 Uhr
Moin mycroftone,

immer der Reihe nach... erst mal Strategie 1, dann schauen wir, ob wir mehr brauchen.

Wenn ich Dich richtig verstanden habe, dann liegen die LogFiles als einzelne Dateien getrennt voneinander vor.

Vereinfacht ausgedrückt, bei Dir liegt irgendwie irgendwie eine Datei
  • "Indien_Juli2009.txt" oder so ähnlich mit Inhalt
  • und eine "Russland_2008" oder so mit Inhalt
Im Fall Russland habe ich gar kein Problem, die einzelnen Zeilen-Bestandteile
zuzuordnen oder auch neu anzuordnen:
[Text am CMD-Prompt; das ">" am Zeilenanfang nicht mit eingeben.]
Wenn Du lieber dieses Format haben willst
Russland PROD_DATA_0907_ vom 06.04.2008 11:02"
...okay:
Fettich.

Im Falle "Indien" wird es nun auch nicht soooooo komplex.

Ein erstes Antesten liefert:
Das heißt, hier ist abhängig von 6.Token/Variable %f eine Addition von 12 Stunden auf den %hh% Wert nötig

Diesen Rest mache ich jetzt mal in einer Batchdatei, weil die Darstellung von längeren Befehlszeilen hier im Forum nur suboptimal unterstützt wird.

Also: Batchdatei namens TestIndien.cmd.

Ausgabe des Testschnipsels:
Also.... ich sehe keine Notwendigkeit einer noch aufwändigeren Datumszerlegung.

PS. Und hier hast Du mich falsch verstanden.
Wenn du aber meinst du willst hier keine Batchsnipsel Posten die Allgemeingültig von jeden verwendet werden können
Doch doch, will ich durchaus.... ich will nur nicht bereits "fertige" Schnipsel noch mal für diesen oder jenen Spezialfall anpassen.
Sondern eher die Schnipsel so variabel lassen, dass sie für verschiedene Gelegenheiten verwendet werden können.

Grüße
Biber
Bitte warten ..
Mitglied: mycroftone
17.07.2009 um 18:26 Uhr
Hallo Biber

Ok dann habe ich dich wirklich falsch verstanden.

Ich dacht nur deine Allegemeingültigen super subroutine könnten wir für den Fall das die Zeitangabe AM/PM ist erweitern.
Und ist nach meiner meinung nach auch kein Spezialfall.

Da ich wie ich schon geschrieben habe die subroutine sei es auch in Strategie 2 weiterverwenden will für folgeprojekte
währe ich daran interressiert deine subroutine sinnvoll zu ergänzen.
Bitte warten ..
Mitglied: Biber
17.07.2009 um 20:28 Uhr
Moin mycroftone,

okay, diese mögliche AMPM-Format-Information lässt sich sicherlich noch relativ stressarm einbauen.
Das ist die gute Nachricht
Weite unten kommt aber noch eine schlechte.

Zu berücksichtigen ist ja nur, dass die bisherige GetAllDateTimeInfos.bat [oder .cmd] JETZT max 5 Parameter erwartet.

Syntax jetzt: <batname> [Datum] [Zeit] [/s|/u] [/q] [/?]
--> also bei sinnvollem Aufrufen maximal die Parameter datum zeit /setzeGlobaleVars /quaknichrumdabei
[Beispiel] getAllDatetimeInfos 11.11.2009 10:27 /s /q [/Beispiel]

Das wäre jetzt zu erweitern auf einen weiteren [optionalen] Parameter
--> somit bei sinnvollem Aufrufen maximal die Parameter datum zeit AmPm /setzeGlobaleVars /quaknichrumdabei

--> Todo:
a) Dort wo jetzt bei der Parameterprüfung bzw bei Erkennung der Steuerungsschalter (/s /q /u ) bisher steht:
For %%i in ( %1 %2 %3 %4) Do ( .......
Muss jetzt ein Parameter mehr geprüft werden:
For %%i in ( %1 %2 %3 %4 %5) Do (

b) in der Aufzählung
SET "AllDateTimeVars=DateOrder KW OSKW DoW DoY cDoW DD TT MM JJ YY hh min ss ms"
sollte eine weitere variable AMPM aufgenommen werden
SET "AllDateTimeVars=DateOrder KW OSKW DoW DoY cDoW DD TT MM JJ YY hh min ss ms AMPM"

c)

30.FOR %%i in (%AllDateTimeVars%) do @if defined %%i set "%%i=" 31.:: Datum will ich OHNE Wochentag haben. Zwischenschritt mit INDate 32. 33.:: erweitert, Parameter erlaubt.. Param1=Datumswert;Param2=Zeit 34.For %%i in (%1 %2 %3) Do If /i %%i==/u goto :Cleanup
35.Set "INDate=%date%"
36.Set "INTime=%time%"

nach den jetzigen Zeilen 38/39 oben im Schnipsel sollte eine neue Zeilen folgen.
38.If NOT [%1]==[] If /i [%1] NEQ [/q] If /i [%1] NEQ [/s] set "INDate=%1"
39.If NOT [%2]==[] If /i [%2] NEQ [/q] If /i [%2] NEQ [/s] set "INTime=%2"
--> neu: If [%3]==[PM] set "AMPM=PM" else Set "AMPM=AM"
(somit ist gesichert, dass bei fehlendem "AM" oder "PM"-Parameter "AM" gilt. Und "AM" bedeutet ja: "Addiere KEINE 12 Stunden zu irgendwas.")

d)
Bei der "Addition von 12 Stunden gibt es mehrere Wege.
d1) Den einleuchtenderen und schlankeren, den Du gewählt hast ("Rechne Stunde = Stunde plus 12").
Dabei hält allerdings die CMD.exe bzw. der Set /A-Befehl noch ein paar Überraschungen bereit.
Z.B wenn Du von "08:00 PM" auf unser deutsches Tagesschau-Zeitformat 20.00 gehen willst.
-> ein "Set /a 08 + 12" bringt leider nicht auf Anhieb 20, sondern erstmal einen Syntaxfehler. Probier es einfach.

d2) Weil ich da gar nicht mit der CMD.exe diskutieren wollte habe ich oben den etwas unbeholfeneren Copy&Paste-Weg skizziert.
Dieses umständliche "....If [%%d]==[01] Set "hh=13" .... If [%%d]==[06] Set "hh=18" If [%%d]==[12] Set "hh=00"....."
Sieht albern aus, ist aber lesbar und wartbar.

e) die Hilfe zur Syntax muss angepasst werden.

Das wars.

Jetzt die schlechte Nachricht.
Da die GetAllDatetimeInfo das Datums/Zeitformat des Rechners bzw des angemeldeten Users zugrundelegt,
wird sie im Falle "indisches DIR-Ausgabeformat" NICHT erkennen können, dass das Datum im Format "MM/TT/JJJJ" kommt.
Jedenfalls nicht, wenn auf Deinem Rechner eingestellt ist "TT.MM.JJJJ"

Hier musst du auf jeden fall vorher eingreifen und in einer FOR/F-Anweisung ein bisschen umsortieren.
Aber das hatten wir ja oben schon.

Einen Vorteil für Deine Verarbeitung sehe ich durch den Aufruf der GetAllDateTimeInfos nach wie vor nicht.
Okay, Du könntest noch bei jeder aufbereiteten Zeile mit dazu schreiben, welcher Wochentag es war oder welche KW.

Na ja, das musst Du abwägen, welcher Aufwand vertretbar ist.
Und üben tut es allemal.

Grüße
Biber
Bitte warten ..
Mitglied: mycroftone
17.07.2009 um 20:50 Uhr
Alles klar ich Probiere es aus.

Der Sachverhalt das daß Rechnen Problem bereit könnte habe ich in meinen Logdateinen noch nicht gesehen.
Also bis jetzt schaut alles noch so wie ich gewünscht habe.
Das mit dem If [%%d]==[01] Set "hh=13 hatte ich erst
Aber wie du selber schon sagtest sah mir des weng dum aus.

Und das Problem mit dem Indian dir habe ich irgendwie nicht verstanden.
Wenn du meinst das ich 07/17/2009 über die drei Variabeln %MM% %TT% %JJ%
nachher selber in 17.7.2009 zusammenbasteln muss.
Das bekomme ich hin.

Ich werde auf jedenfall einmal deinen Subroutine mit den von dir angegeben Zeile verändern und austestet.
Bitte warten ..
Mitglied: mycroftone
24.07.2009 um 13:11 Uhr
Hallo Biber

Jetzt habe ich dein Problematik wegen des Indischen Datums verstanden.

Ich hatte in meiner Auswertung plötzlich ein Download vom 7 Tag im 19 Monat

In dem Fall kann man dann ja doch keine allgemeingültiges Script wegen dem Datum bauen.
Also müss ich hier individuell darauf eingehen wenn das Land Indian ist das ich das Datum hier umbaue.

Oder man schlampt auch hier und prüft ob Monat größer 12 ist und Tauscht dann Monat und Tag dann währe man bei 2/3 der Tage richtig.
Aber ich denke da bleibe ich lieber bei der ersten Variante.



Das Script habe ich jetzt soweit ausgeweitet und funktioniert auch bei den ersten Tests.

Aber ich werde es noch weiter testen
Bitte warten ..
Mitglied: mycroftone
22.12.2009 um 15:42 Uhr
Hallo Zusammen Ich habe das :GET-DATE-TIME-G Script noch etwas verändert.
Um hier etwas Internationler zu werden schicke ich zu meinen Logfiles von Kuinden immer das Datuimsformat mit
damit das umwandeln in das Deutsche Datumsformat keinen Problem bereitet.

Und wenn kein Datumsformat mitgeschickt wird wähle ich die 2/3 Lösung
also prüfe ob Monat größer 12 ist und Tauscht dann Monat und Tag.


Bitte warten ..
Mitglied: Biber
22.12.2009 um 16:07 Uhr
Moin mycroftone,

vielen Dank fürs Posten deiner Erweiterung.

Ich habe diesen Beitrag eben auch mal als Querverweis beim "Workshop Batch for Runaways III"-Tut nachgetragen.

Und ich denke, wir können jetzt auch diesen Beitrag auf "Gelöst" setzen?

Grüße und ein paar entspannte Tage zum Jahresende
Biber
Bitte warten ..
Ähnliche Inhalte
Internet

Tim Berners-Lee will das Internet verändern

Information von FrankInternet4 Kommentare

Einer der Erfinder des Internets, Tim Berners-Lee, hat heute auf der Webseite Inrupt seine Pläne für ein neues und ...

Batch & Shell

Wenn echo gleich G dann springe zu G

gelöst Frage von o0Julia0oBatch & Shell5 Kommentare

hi, so habe ich es versucht - klappt aber nicht: wo ist das Problem? danke!

Batch & Shell

PowerShell - Get-ADGroupMember

Frage von emeriksBatch & Shell7 Kommentare

Hi, weiß jemand, ob man Get-ADGroupMember dazu bewegen kann, bei Angabe von -Recursive nicht nur die einzelnen Benutzer zu ...

Batch & Shell

Powershell Get-SchedulesTask

gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hi, für einen Deploymentvorgang habe ich derzeit eine Batchdatei in der viele Scheduled Tasks disabled werden. In der Batchdatei ...

Neue Wissensbeiträge
Sicherheit

Windows Setup erlaubt elevation of privilege plus DC Updates

Information von DerWoWusste vor 5 StundenSicherheit

Eine interessante neue Sicherheitslücke. Details gibt es wenig, aber die klare Empfehlung: If you are using WSUS or MEM ...

Exchange Server

Exchange Server 2016 and the End of Mainstream Support

Information von Dani vor 18 StundenExchange Server

As hopefully many of you already know Exchange Server 2016 enters the Extended Support phase of its product lifecycle ...

Viren und Trojaner

Schwachstelle in Teamviewer oder aufgeflogene Backdoor?

Information von magicteddy vor 1 TagViren und Trojaner

Moin, die Interpretation überlasse ich jedem selber, ich habe eine deutliche Abneigung dagegen. Wer es nutzen muss sollte schleunigst ...

Sicherheit

Eine ungepatchte Sicherheitslücke in der Windows Druckerwarteschlange ermöglicht das Ausführen von Malware mit Adminrechten

Information von transocean vor 3 TagenSicherheit

Moin, eigentlich sollte die Sicherheitslücke schon seit Mai 2020 geschlossen sein. Aber lest selbst. Grüße Uwe

Heiß diskutierte Inhalte
Internet
VPN und Fritzbox
Frage von jensgebkenInternet29 Kommentare

Hallo Gemeinschaft, da der Support von AVM mir keine Antwort gibt, versuche ich es hier einmal HArdware 7490 zwei ...

Sicherheit
Verschlüsseln anstatt löschen ?
Frage von TastuserSicherheit18 Kommentare

Hallo, ist es möglich ganze Ordner auf Windows 10 zu verschlüsseln? Aber keine Kopien zu verschlüsseln (wie mit WinRAR) ...

Switche und Hubs
Neue Switches für Schule
Frage von Freak-On-SiliconSwitche und Hubs15 Kommentare

Servus; Eins Vorweg, bin leider in vielen Sachen noch nicht so erfahren. Und nein, ich kann LEIDER keinen Dienstleister ...

LAN, WAN, Wireless
Zwei Fritzboxen per VPN verbinden - Aber ins Gast-Lan4
gelöst Frage von KlasiKlausLAN, WAN, Wireless14 Kommentare

Hallo liebe Community, tldr: Zwei Computer @ 2 locations - connect via FritBox VPN Heimnetzwerk Fritte1 und LAN4 (Gastnetzwerk) ...

Weniger Werbung?
Administrator Magazin
08 | 2020 Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es aber nicht nur um die Frage, wie die Datenbestände in die Wolke zu migrieren sind, sondern auch darum, welche Datenbank ...