Lösung des Sommerzeit-Problems

Lösung des Sommerzeit-Problems

Postby Gerby » 03.04.2011, 01:00

Hallo Mehrfachdownload-Geplagte! ;)

Das Problem des erneuten Downloads von Dateien, die ursprünglich während der Sommerzeit heruntergeladen wurden und dann nach der Zeitumstellung auf Normalzeit erneut, hat mich einfach nicht in Ruhe gelassen. Es gab und gibt zwar Workarounds (Ticket c't Offline Update, Wiki-Eintrag c't Offline Update), jedoch sind diese nur bedingt befriedigend.

Der Querschläger ist hierbei das wget-Tool, das anstatt der UTC-Zeit immer den lokalen Zeitstempel zum Vergleich verwendet, der sich durch die Zeitumstellung verändert (auch bei Verwendung einer anderen Zeitzone).

Nach diversen Recherchen und vielen Versuchen habe ich nun eine Lösung des Problems gefunden. :idea: wget berücksichtigt die Umgebungsvariable TZ, in der die aktuelle Zeitverschiebung im Verhältnis zur UTC abgelegt werden kann. Diese ermittelt man am besten anhand der Registry. Das funktioniert mit dem folgenden VBScript CurrentTimeZone.vbs (kommt ins Verzeichnis /cmd):

HINWEIS: Die aktuelle Version 0.2.0 des Skripts gibt es in diesem Beitrag.

Code: Select all
' *****************************************************
' * CurrentTimeZone.vbs (by Gerby)                    *
' * Determines the current time zone information      *
' * and returns an UTC string.                        *
' *****************************************************

Set WshShell = WScript.CreateObject("WScript.Shell")
Registry_TimeBias =  "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias"

' Registry_TimeBias is indicated in minutes, therefore the division by 60 (conversion to hours)
TZ_Offset = WshShell.RegRead(Registry_TimeBias)/60
TZ_String = "UTC" & TZ_Offset
WScript.Echo TZ_String



Leider kann das Skript die Umgebungsvariable TZ nicht für die aufrufende Umgebung setzen, so dass ein kleiner Umweg genommen werden muss. Das Skript gibt den benötigten String für die Umgebungsvariable aus. Diese Ausgabe muss durch DownloadUpdates.cmd in die Umgebungsvariable TZ geleitet werden. Der Aufruf des VB-Skripts und die Erstellung der Umgebungsvariable erfolgt in einer Zeile:

Code: Select all
for /f "tokens=*" %%u in ('cscript.exe //NoLogo CurrentTimeZone.vbs') do set TZ=%%u



Das war's auch schon. :D

Kleiner Wermutstropfen: Es ist durchaus möglich, dass beim ersten Download nach dem Anwenden dieser Lösung einmalig diverse (oder auch alle) Dateien nochmals heruntergeladen werden, da wget sich nun an der UTC orientiert. Aber danach sollten keine Mehrfachdownloads mehr auftreten.

Schöne Grüße
Gerby
Last edited by Gerby on 04.04.2011, 23:31, edited 1 time in total.
Reason: Hinweis auf neue Version von CurrentTimeZone.vbs
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: Lösung des Sommerzeit-Problems

Postby boco » 03.04.2011, 05:00

Mal sehn was Cheffe dazu sagt.

Am besten wäre es latürnich, diese dämliche Uhrzeitumstellung abzuschaffen.
Microsoft update catalog: http://catalog.update.microsoft.com/v7/site/
Windows Install media download: https://support.microsoft.com/en-us/help/15088/windows-create-installation-media
boco
 
Posts: 2391
Joined: 24.11.2009, 17:00
Location: Germany

Re: Lösung des Sommerzeit-Problems

Postby rednaxela » 03.04.2011, 15:20

Das wär ja fantastisch wenn´s funktionieren würde, danke für dein Engagement Gerby :D

Frage dazu: ich habe mir für verschiedene Zwecke .cmd-Dateien nach dem Muster:
wget Dateiname.ext -N
gebastelt. Wie kann ich sowas mit deinem Script "verbauen" damit es funktioniert, bzw. wie würde ein Beispiel aussehen :?:

Und ja: die Abschaffung der Zeitumstellung wär das Beste, aber ich fürchte das werden wir (wenn überhaupt möglich) nur sehr langfristig beeinflussen können.
Die Mehrheit der Mitglieder dieses Forums hat sich dafür ausgesprochen höflich und respektvoll miteinander umzugehen. Neue Mitglieder werden gebeten diese Entscheidung zu respektieren und sich ebenfalls so zu verhalten ;)
Bin ab und zu mal hier...
rednaxela
 
Posts: 164
Joined: 15.09.2010, 09:22
Location: Niedersachsen

Re: Lösung des Sommerzeit-Problems

Postby Gerby » 03.04.2011, 20:36

Hallo Alexander!

Es geht eigentlich nur darum, dass die Umgebungsvariable TZ gesetzt ist, wenn wget aufgerufen wird. Im Grunde könnte sich diese jeder auch dauerhaft einstellen (System- oder User-Umgebungsvariable), müsste dann jedoch immer beim Sommerzeit-Normalzeit-Wechsel (und umgekehrt) eine manuelle Umstellung durchführen (oder aber auch bei einem Zeitzonenwechsel, z. B. wenn man mit dem Schlepptop unterwegs ist). Für uns in Deutschland heißt das:

Normalzeit: TZ = UTC-1
Sommerzeit: TZ = UTC-2

Das Skript und die Zeile für die Batch-Datei können universell verwendet werden. Damit wird die Umgebungsvariable TZ halt nur für die Dauer eingerichtet, bis die aktuelle Befehlzeile wieder verlassen wird. Lege das Skript in das gleiche Verzeichnis wie deine Batch-Datei(en) und setze die Zeile mit dem for-Befehl irgendwo vor den Aufruf von wget in die Batch-Datei(en).

Und: Ja, ich bin auch anti Zeitumstellung! Insgesamt hat man deutlich mehr Ärger damit, als dass diese eine Stunde irgendein wirkliches Energiesparpotenzial hätte. Dabei geht's nicht nur ums Technische, sondern zum Beispiel auch um den Schlafraub der Eltern mit jungen Kindern, deren Schlafrhythmus sich nicht um eine Zeitumstellung schert (nur ein Beispiel).

Gruß
Gerby
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: Lösung des Sommerzeit-Problems

Postby Gerby » 03.04.2011, 20:45

Noch zwei, drei allgemeine Anmerkungen:

1. Insgesamt ist meine Testreihe bisher sehr übersichtlich geblieben. Zum Beispiel habe ich das Ganze bisher nur mit NTFS-Partitionen getestet. Was bei den FAT-Derivaten passiert, kann ich nicht sagen. War das da überhaupt jemals ein Problem? Wie auch immer: Rückmeldungen von Tests euerseits sind willkommen.

2. Ich bin alles andere als ein Skript-Profi. Insbesonder mit VBScript habe ich mich erst zum zweiten Mal auseinandergesetzt. Verbesserungsvorschläge sind willkommen.

P.S.: Doch nur zwei Anmerkungen. ;-)
Mach mit - der Übersichtlichkeit wegen! Füge Log-Auszüge als [Code] ein.
Make it clear! Insert log excerpts as [Code].
Gerby
 
Posts: 504
Joined: 11.09.2009, 15:57
Location: DE > SH > SE

Re: Lösung des Sommerzeit-Problems

Postby rednaxela » 03.04.2011, 21:34

Hallo Gerby,

nochmals langsam zum Mitschreiben für den älteren Herrn (mich) :lol: :

ich habe das Script "CurrentTimeZone.vbs" und "wget.exe" im selben Verzeichnis (oder im Pfad, was Platz und Übersicht schafft ;) ) und rufe dann z. B. eine .cmd zur Abfrage des Updatekatalogs:
Code: Select all
for /f "tokens=*" %%u in ('cscript.exe //NoLogo CurrentTimeZone.vbs') do set TZ=%%u
wget http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab -N
auf :?:

Gruß,
Alexander
Die Mehrheit der Mitglieder dieses Forums hat sich dafür ausgesprochen höflich und respektvoll miteinander umzugehen. Neue Mitglieder werden gebeten diese Entscheidung zu respektieren und sich ebenfalls so zu verhalten ;)
Bin ab und zu mal hier...
rednaxela
 
Posts: 164
Joined: 15.09.2010, 09:22
Location: Niedersachsen

Re: Lösung des Sommerzeit-Problems

Postby rednaxela » 03.04.2011, 23:30

Habe jetzt mal ein wenig herumprobiert...: bindet man das Script beim Download bzw. bei der Überprüfung mit ein scheint es so zu sein dass es dann wie gewünscht funktioniert wenn die Dateien eine Erstellungszeit nach MEZ, also Winterzeit (oder auch UTC+1) haben. Das heisst wer sein Repositry mit dem WSZKonverter auf Sommerzeit umgestellt hat muss es erst wieder auf Winterzeit umstellen damit der Download MIT Script funktioniert ;)

Bitte um Richtigstellung falls ich falsch liege.

Gruß,
Alexander
Die Mehrheit der Mitglieder dieses Forums hat sich dafür ausgesprochen höflich und respektvoll miteinander umzugehen. Neue Mitglieder werden gebeten diese Entscheidung zu respektieren und sich ebenfalls so zu verhalten ;)
Bin ab und zu mal hier...
rednaxela
 
Posts: 164
Joined: 15.09.2010, 09:22
Location: Niedersachsen

Re: Lösung des Sommerzeit-Problems

Postby boco » 04.04.2011, 15:26

Sommerzeit: TZ = UTC-2
Ich habe da unterschiedliche Sachen gehört.

z. B.
TZ=UTC-1DST
TZ=MET-1DST
Microsoft update catalog: http://catalog.update.microsoft.com/v7/site/
Windows Install media download: https://support.microsoft.com/en-us/help/15088/windows-create-installation-media
boco
 
Posts: 2391
Joined: 24.11.2009, 17:00
Location: Germany

Re: Lösung des Sommerzeit-Problems

Postby rednaxela » 04.04.2011, 16:27

Obacht bei den Begriffen, nicht durcheinanderwürfeln, es ist auch so kompliziert genug ;)

UTC steht für Universal Time Coordinated, die Koordinierte Weltzeit, von ihr werden alle anderen Zeiten abgeleitet.
MET ist die alte Bezeichnung für MEZ, also Winterzeit
DST steht für Dayligt Saving Time, also Sommerzeit

TZ ist in dem Fall nur eine Variable.

Quelle: überwiegend wikipedia
Die Mehrheit der Mitglieder dieses Forums hat sich dafür ausgesprochen höflich und respektvoll miteinander umzugehen. Neue Mitglieder werden gebeten diese Entscheidung zu respektieren und sich ebenfalls so zu verhalten ;)
Bin ab und zu mal hier...
rednaxela
 
Posts: 164
Joined: 15.09.2010, 09:22
Location: Niedersachsen

Re: Lösung des Sommerzeit-Problems

Postby boco » 04.04.2011, 18:59

Weiß ich doch alles. Ich meinte nur, daß ich beides schon mal gesehen/gehört habe. Ich kenne TZ noch aus meiner alten PGP-Zeit.

Es ging um DST. Statt UTC-2 ist UTC-1DST evtl. eleganter (wenn wget DST beachtet).
Microsoft update catalog: http://catalog.update.microsoft.com/v7/site/
Windows Install media download: https://support.microsoft.com/en-us/help/15088/windows-create-installation-media
boco
 
Posts: 2391
Joined: 24.11.2009, 17:00
Location: Germany

Next

Return to Download

Who is online

Users browsing this forum: No registered users and 45 guests