¿Sincronizar la hora de Internet en un script de Windows?

11

¿Hay alguna manera de sincronizar el reloj del sistema con un servidor de hora de Internet (es decir: time.nist.gov) a través de la línea de comandos? Preferiblemente, esto debería ser algo ejecutable a través de BAT o script de PowerShell.

Esta necesidad particular surge porque tengo algunas máquinas virtuales para las que uso regularmente la función "guardar estado de la máquina", y estas no suelen volver a sincronizar sus relojes cuando los "despierto". Muchas veces, los recargo para encontrar que el reloj está (y se queda) días fuera de sincronización.

Volver a sincronizar el reloj a través del cuadro de diálogo Configuración de hora de Internet generalmente funciona bien, pero se requiere mucho clic del mouse para hacerlo. Prefiero mantener un script en el escritorio en el que pueda hacer doble clic y hacer el trabajo por mí.

En este momento, esto es para un sistema que ejecuta Windows 7 Home x64, pero sería bueno tener compatibilidad con versiones anteriores de XP SP3.

Iszi
fuente
1
La mayoría del software VM (Virtual PC, VirtualBox) viene con controladores ("Adiciones") que mantienen el reloj del huésped sincronizado con el host, entre otras cosas.
user1686
@grawity: uso de esos, pero no parece hacer el trabajo.
Iszi

Respuestas:

13

Consulte la referencia de W32tm, "Una herramienta utilizada para diagnosticar problemas que ocurren con Windows Time": http://technet.microsoft.com/en-us/library/bb491016.aspx . También,w32tm /?

Uso w32tm /resync. Es posible que también deba configurar un servidor net timesi aún no lo ha hecho.

Jeff Ferland
fuente
2
Bien, lo hice ... @echo off && w32tm /resync && PAUSELancé eso en un archivo BAT y configuré un acceso directo en el escritorio con "Ejecutar como administrador" marcado. ¡Gracias!
Iszi
En Windows 7, cuando hago esto obtengo:The following error occurred: The service has not been started.
Usuario
@echo off && w32tm / resync - Command propmpt dice que no reconoce el comando (w32tm)
Arpit Parekh
.. El comando no pude ejecutar en Windows 7.
Arpit Parekh
1
@DeepakKamat, probablemente necesite usar los Servicios de Windows (escriba "services.msc" en un cuadro de ejecución o búsqueda). Desplácese hacia abajo para encontrar la hora de Windows. Haga clic derecho sobre él y elija Propiedades. Allí puede configurar el tipo de inicio para que sea automático.
Kirk Liemohn
1
@echo off
net start W32Time
w32tm /resync
echo sync complete
  1. Copie este código en el Bloc de notas y guárdelo como un .batarchivo.
  2. Ejecute el archivo por lotes con privilegios de administrador o programe una tarea para ejecutar este archivo por lotes desde el Programador de tareas, según sea necesario.

Nota: Esto requiere privilegios de administrador y una conexión a Internet que funcione.

Sainath Prabhu
fuente
0

Solía ​​hacerlo con el comando net.

para ntp

tiempo neto ntp.server.foo

para ventanas

tiempo neto \\ servidor

No puedo recordar si necesitabas algún tipo de indicador / ntp para el ntp ... te dirá si lo necesitas.

Kyle__
fuente