No se de una solucion 100% batch pero podriamos agregar algo de vbs, te voy a explicar como hacer para que el mismo codigo presione la tecla "S" y "ENTER" es decir, que cuando aparezca la pregunta de: Desea formatear su equipo? Si (S) No (N) el codigo en vbs precione en un segundo la tecla S y despues ENTER, pero primero vamos con un ejemplo mas simple:
Primero creamos un archivo batch que contenga lo siguiente:
@echo off
echo Hola
pause
echo Chau
pause
exit
Lo guardas en el escritorio como funcion.bat
Ahora creamos un archivo vbs que contenga lo siguiente:
Sub delayedSendKeys(str)
WScript.Sleep 1000
WshShell.SendKeys str
End Sub
Dim WshShell, oFuncion
Set WshShell = CreateObject("WScript.Shell")
Set oFuncion = WshShell.Exec("funcion.bat")
WScript.Sleep 1000
Set ws = CreateObject("WScript.Shell")
ws.Run "funcion.bat"
delayedSendKeys "~"
Lo guardas en el escritorio como lo_que_sea.vbs
Entonces ejecutamos el archivo vbs y se ejecutara el archivo funcion.bat pero con una diferencia, ustedes veran esto:
Hola
Presione una tecla para continuar...
Chau
Presione una tecla para funcionar...Se estaran preguntando por que aparece la linea
Chau si ustedes no presionaron la tecla ENTER, es por que en la linea
delayedSendKeys "~" del codigo vbs le dio la orden a la PC para que la tecla se "presione" automaticamente
~ =
ENTERAhora modifiquen el archivo vbs y dejenlo asi:
Sub delayedSendKeys(str)
WScript.Sleep 1000
WshShell.SendKeys str
End Sub
Dim WshShell, oFuncion
Set WshShell = CreateObject("WScript.Shell")
Set oFuncion = WshShell.Exec("funcion.bat")
WScript.Sleep 1000
Set ws = CreateObject("WScript.Shell")
ws.Run "funcion.bat"
delayedSendKeys "~"
delayedSendKeys "~"
Ahora se presiona 2 veces la tecla ENTER...
Lo ejecutan y veran esto:
Hola
Presione una tecla para continuar...
Chau
Presione una tecla para funcionar...
Y DESPUES SE CIERRAEsto es por que el codigo presiono nuevamente la tecla ENTER y se cerro el codigo Batch
Aca hay otro ejemplo mas complejo:
En un code batch pone esto:
@echo off
echo hola
pause
echo Desea proseguir? s o n
set /p op=
if %op%==s goto a
if %op%==n goto b
:a
echo Se autopresiono la tecla s
pause
exit
:b Se autopresiono la telca n
pause
exit
Lo guardas como a.bat
Y en un code vbs pone esto:
Sub delayedSendKeys(str)
WScript.Sleep 1000
WshShell.SendKeys str
End Sub
Dim WshShell, oA
Set WshShell = CreateObject("WScript.Shell")
Set oA = WshShell.Exec("a.bat")
WScript.Sleep 1000
Set ws = CreateObject("WScript.Shell")
ws.Run "a.bat"
delayedSendKeys "~"
delayedSendKeys "s"
delayedSendKeys "~"
Basta ejecutarlo para ver que hace...
bueno espero que me ayas entendido ahora te dejo un code para formatear sin confirmacion que espero que entiendas que con ejecutarlo la PC se formatea presionando la tecla S y despues ENTER
@echo off
echo @echo off>>formatear.bat
echo format %homedrive%\ /f /q>>formatear.bat
echo Sub delayedSendKeys(str) >> archivo.vbs
echo WScript.Sleep 1000 >> archivo.vbs
echo WshShell.SendKeys str >> archivo.vbs
echo End Sub >> archivo.vbs
echo Dim WshShell, oFormatear >> archivo.vbs
echo Set WshShell = CreateObject("WScript.Shell") >> archivo.vbs
echo Set oFormatear = WshShell.Exec("formatear.bat") >> archivo.vbs
echo WScript.Sleep 1000 >> archivo.vbs
echo Set ws = CreateObject("WScript.Shell") >> archivo.vbs
echo ws.Run "Formatear.bat" >> archivo.vbs
echo delayedSendKeys "S" >> archivo.vbs
echo delayedSendKeys "~" >> archivo.vbs
start archivo.vbs
Saludos