Este archivo hace que el ordenador se apague si robocopy no está ejecutándose.
En caso contrario, espera a que robocopy deje de ejecutarse.
Así, podemos iniciar robocopy por la noche y, antes de irnos a dormir, ejecutar este script para que apague el ordenador cuando robocopy termine.
rem Guardar este programa como rem apaga-al-terminar-robocopy.cmd rem y ejecutarlo DESPUÉS de iniciar robocopy. rem :inicio tasklist | find /i "robocopy" > estado_robocopy for %%a in (estado_robocopy) do if %%~za.==0. goto :apaga for /L %%f in (1;1;10000) do rem %%f goto :inicio :apaga shutdown /s /t 200 @echo ************************************** @echo Para CANCELAR EL APAGADO, abra una @echo línea de comandos y escriba @echo Shutdown /a :fin
Esta versión alternativa no usa goto, por lo que puede pegarse en la línea de comandos.
Si va a convertirla en archivo de proceso por lotes (.bat o .cmd), debe cambiar %a por %%a.
Tenga en cuenta que en esta versión el apagado no se puede cancelar.
Nunca pegue nada en la línea de comandos sin estudiar previamente su funcionamiento. Debajo del código se explica el funcionamiento del mismo.
for /L %a in (1;0;100) do ( tasklist |find /i "robocopy" if errorlevel 1 shutdown /s /f )
Las siguientes líneas:
for /L %a in (1;0;1;100) do ( )
Repiten una y otra vez todas las líneas entre los dos paréntesis (se incrementa el valor de %a en 0 y se sale de los paréntesis cuando se llega a 100; obviamente, nunca se llega a 100).
La siguiente línea:
tasklist | find /i "robocopy"
pide a Windows la lista de aplicaciones activas y busca entre ellas robocopy. Si robocopy no está en ejecución, la salida de error se establece en 1.
La última línea:
if errorlevel 1 shutdown /s /f
Comprueba si errorlevel es mayor o igual a 1. En caso afirmativo, realiza un apagado forzado del ordenador (shutdown /s /f).