Synchronizować czas internetowy w skrypcie Windows?


12

Czy istnieje sposób na zsynchronizowanie zegara systemowego z internetowym serwerem czasu (np .: time.nist.gov) za pomocą wiersza polecenia? Najlepiej, aby było to coś wykonywalnego za pomocą BAT lub skryptu PowerShell.

Ta szczególna potrzeba pojawia się, ponieważ mam kilka maszyn wirtualnych, dla których regularnie korzystam z funkcji „zapisz stan komputera”, a te zwykle nie synchronizują ponownie swoich zegarów, gdy „budzę” je. Często ładuję je ponownie, aby stwierdzić, że zegar jest (i pozostaje) dni bez synchronizacji.

Ponowna synchronizacja zegara za pośrednictwem okna dialogowego Internetowe ustawienia czasu zwykle działa dobrze, ale wymaga to kliknięcia myszą. Wolałbym po prostu zachować skrypt na pulpicie, który mogę kliknąć dwukrotnie i wykonać zadanie za mnie.

W tej chwili jest to system z systemem Windows 7 Home x64, ale miło byłoby mieć zgodność wsteczną z XP SP3.


1
Większość oprogramowania VM (Virtual PC, VirtualBox) zawiera sterowniki („Dodatki”), które utrzymują synchronizację zegara gościa z hostem.
user1686,

@grawity - Używanie ich, ale wydaje się, że to nie działa.
Iszi

Stworzyłem do tego zgłoszenie błędu. System Windows nie synchronizuje się z serwerem czasu po wznowieniu ze stanu uśpienia lub hibernacji. Identyfikator URI systemu Windows: feedback-hub:?contextid=58&feedbackid=f15278d4-b20d-4a9a-9693-cdf8fbaaa669&form=1&src=1<- Umieść w oknie dialogowym Uruchamianie systemu Windows, jeśli masz koncentrator opinii zainstalowany ze sklepu Windows
Gabriel Fair

Odpowiedzi:


13

Zobacz odniesienie do W32tm, „Narzędzie używane do diagnozowania problemów występujących z czasem systemu Windows”: http://technet.microsoft.com/en-us/library/bb491016.aspx . Również,w32tm /?

Zastosowanie w32tm /resync. Być może będziesz musiał ustawić serwer, net timejeśli jeszcze tego nie zrobiłeś.


2
Dobra, zrobiłem ... @echo off && w32tm /resync && PAUSEWrzuciłem to do pliku BAT i ustawiłem skrót na pulpicie z zaznaczoną opcją „Uruchom jako administrator”. Dzięki!
Iszi

W systemie Windows 7, gdy to robię, otrzymuję:The following error occurred: The service has not been started.
Użytkownik

@echo off && w32tm / resync - Propmpt polecenia mówi, że nie rozpoznaje polecenia (w32tm)
Arpit Parekh

.. Polecenie, którego nie mogłem uruchomić w
systemie

1
@DeepakKamat, prawdopodobnie musisz użyć usług systemu Windows (wpisz „services.msc” w polu uruchamiania lub wyszukiwania). Przewiń w dół, aby znaleźć czas systemu Windows. Kliknij go prawym przyciskiem myszy i wybierz Właściwości. Tam możesz ustawić typ uruchamiania na automatyczny.
Kirk Liemohn

1
@echo off
net start W32Time
w32tm /resync
echo sync complete
  1. Skopiuj ten kod do Notatnika i zapisz go jako .batplik.
  2. Uruchom plik wsadowy z uprawnieniami administratora lub zaplanuj zadanie uruchomienia tego pliku wsadowego z Harmonogramu zadań, zgodnie z wymaganiami.

Uwaga: Wymagało to uprawnień administratora i działającego połączenia internetowego.


0

Robiłem to za pomocą polecenia net.

dla ntp

czas netto ntp.server.foo

dla Windowsa

serwer czasu netto \\

Nie pamiętam, czy potrzebujesz jakiejś flagi / ntp dla ntp ... to powie ci, jeśli tak.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.