Lo hago con el gpedit.msc el problema es que el proceso de apagado lo primero que hace es cerrar las conexiones, mi .bat es para insertar unos datos en el servidor y claro sin conexión no se puede, existe alguna manera de variar la secuencia de apagado para que el .bat sea lo primero que se ejecute.
No conozco tal cosa (no digo que no se pueda hacer), pero se me ocurre la siguiente posibilidad:
Crea un BAT que realice las operaciones que desees y al finalizar el proceso llama al "shutdown -s -f -t 0"
Dicho BAT lo dejas en el escritorio con el nombre: APAGAR EQUIPO
Así el usuario solo tendrá que pulsar el BAT, se ejecutará tu función y finalmente se apagará.
Saludos
La estructura del .bat es la siguiente :
start http://192.168.8.74/hora_apagado.php
ping -n 10 192.168.8.74
(Lo del ping es un comodin que he usado para que mientras lo hace le de tiempo a abrir el explorer y ejecutar hora_apagado.php)
La estructura del .php es la siguiente y esta colocado en el servidor:
<?php
$conex = mysql_connect("localhost", "root", "");
mysql_select_db("ala1", $conex);
$disponibilidad = 1;
if($disponibilidad == 1) //si el nombre de usuario no coincide salvaremos los valores de la variable POST y los insertaremos en nuestra tabla usuarios
{
$IP = $_SERVER["REMOTE_ADDR"].""; // IP de origen
@$Puerto .= $_SERVER["REMOTE_PORT"].""; // Puerto de origen. Es innecesario, pero permite validar algunas cosas.
@$Fechahora .= date("d/m/Y.H:i:s").""; // Fecha y hora
@$Pagina .= $_SERVER["REQUEST_URI"].""; // Página solicitada
@$Navegador .= $_SERVER["HTTP_USER_AGENT"]."";
$consulta1 = "INSERT INTO logg (id_log,IP, Puerto,Fechahora,Pagina,Navegador,USER,fecha_apagado,tipo)
VALUES ('','$IP' ,'$Puerto', '', '$Pagina','$Navegador','',now(),'2')";
mysql_query($consulta1);
}
?>
Por si a alguien le sirve esto en un futuro :)
Ahora mi pregunta para terminar de dejarlo Chapó hay alguna manera de ocultar las intrucciones que aparecen en la ventana del CMD cuando se esta ejecutando dicho .bat
No conozco mucho BAT, pero prueba lo siguiente:
@echo off
@start http://192.168.8.74/hora_apagado.php
@ping -n 10 192.168.8.74
shutdown -s -f -t0
Puedes "ensamblar" el .bat en un executable (.exe) y hay le ocultas la consola. jaja
http://www.f2ko.de/programs.php?lang=en&pid=b2e
ping -n 10 192.168.8.74
mejor asi
ping -n 10 127.0.0.1
Mira, no uses ping ... usa este comando que es mas preciso para esperar un X tiempo
timeout /t TIEMPOAESPERAR
Y ale!
Un saludo
Cita de: flepe en 7 Mayo 2014, 11:32 AM
Lo hago con el gpedit.msc el problema es que el proceso de apagado lo primero que hace es cerrar las conexiones, mi .bat es para insertar unos datos en el servidor y claro sin conexión no se puede, existe alguna manera de variar la secuencia de apagado para que el .bat sea lo primero que se ejecute.
Idea:
windows cierra sesión primero y después apaga equipo, porque no lo pones en el perfil de usuario y no de maquina?
Idea2:
anular apagado de windows en tu propio bat hasta que acabes, así
@echo off
REM win7
shutdown /a
REM winxp shutdown -a
REM tu codigo
REM apagas pc
Ah y usando echo off solo se verán algunos detalles minimos en el CMD, pero se ve el CMD, claro..
VBScript (.vbs)
set objshell = createobject("wscript.shell")
objshell.run "tu_archivo.bat",vbhide