La mayoria o son funciones o pueden adaptarse para ello.
Esta lista se ira actualizando poco a poco...
Renombrar un archivo a su fecha de creación:
Código:
: Sintaxis
: nombrebat archivo_a_renombrar
: Autor ne0x
@echo off
if not exist %1 echo Error ! & goto :EOF
set fechaYhora=%~t1
set fecha=%fechaYhora:~0,10%
set fecha=%fecha:/=-%
ren %1 %fecha%%~x1
Scripts NetBIOS
Primero hace ping's y despues checa NetBIOS:
Código:
@echo off
:: Script de scanner NetBIOS por ne0x
set /p ip=3 primeros grupos Ip :
if .%ip%==. echo Error&goto END
FOR /L %%a IN (1,1,225) DO (
ping -n 1 %ip%.%%a | find "Respuesta desde" && echo %ip%.%%a >> tmp.tmp
)
FOR /F %%a IN (tmp.tmp) DO (
nbtstat -a %%a | find "<20>"
)
del tmp.tmp
:END
echo Pulse una tecla para salir
pause>nul
exit 0
Intenta iniciar sesion nula y si lo consigue lo muestra
Código:
@echo off
:: Script de scanner NetBIOS por ne0x
set /p ip=3 primeros grupos de la ip :
if .%ip%==%ip% exit 1
FOR /L %%i IN (1,1,255) DO net use \\%ip%.%%i\ipc$ "" /u:"" 2>> nul && echo Sesion nula en : %ip%.%%i
Usa una lista de users y pass para conseguir accesos
Código:
@echo off
:: Script de scanner NetBIOS por ne0x
set /p ip=Escribe la ip
if .%ip%==. exit 1
for /f %%a IN (ruta_logins) DO (
FOR /F %%i IN (ruta_pass) DO net use \\%ip%\ipc$ %%i /u:%%a >nul &&
echo IP: %ip% login: %%a pass: %%i
)
Basados en un antiguo texto del foro de HxC
Algoritmos de búsquedas
Buscar comandos en todos los archivos por lotes, FOR:
Código:
:: Autor ne0x
echo. > %TMP%\lista.tmp
for %%A IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
if exist %%A:\ (
cd /D %%A:\
for /R %%E IN (*.cmd) DO echo %%E >> %TMP%\lista.tmp
for /R %%E IN (*.bat) DO echo %%E >> %TMP%\lista.tmp
)
)
for /F %%I IN (lista de comandos) DO (
for /F %%J IN (%TMP%\lista.tmp) DO (
find "%%I" "%%J" > nul
if %errorlevel%==0 echo Comando %%I encontrado en %%J
)
)
Función Sleep
Código:
:: Autor ne0x
:: Declaración de la función
:sleep
:: Sintaxis:
:: call:sleep [-s/-m] [x]
:: -s Indicamos los segundos a esperar
:: -m Indicamos los milisegundos a esperar
:: x Cantidad de segundos/milisegundos a esperar
if %1==-s (set /a tiempo=1+%2 && ping -n %tiempo% 127.0.0.1 > nul )
if %1==-m (ping -n 1 127.0.0.1 -w %2 > nul)
goto:EOF
Calcular raices
Código:
:: Autor Sdc
@echo off
if NOT "%~1"=="vv" (cmd /v /c %~nx0 vv^&exit&goto:EOF)
set /P x=Valor:
FOR /L %%i IN (%x%,-2,1) DO (
set /A y=%x%/%%i
IF /I !y! EQU %%i (
echo %%i
goto:EOF
)
)
Código:
:: Autor ne0x
@echo off
set /P x=Valor :
:BUCLE
set /a cont=cont+1
set /a multi=cont*cont
if %multi%==%x% echo Raiz: %cont%&pause&goto:EOF
if %multi% GTR %x% echo El valor no tiene raiz entera&pause&goto:EOF
goto BUCLE
Calcular potencias
Código:
:: Autor ne0x
@echo off
set /P BASE=Base :
set /P EXPONENTE=Exponente :
if %BASE%.==. exit 1
if %EXPONENTE%.==. exit 1
set resultado=1
FOR /L %%A IN (1,1,%EXPONENTE%) DO set /A resultado=resultado*BASE
echo Resultado : %resultado%
goto:EOF
Función, saber las lineas de un archivo
Código:
:: Autor ne0x
:: Sintaxis
:: call:lineas [ruta] [variable]
:: ruta Ruta del archivo
:: variable Nombre de la variable en la que se almacenara el resultado
:lineas
set cont=0
if not exist %1 goto:EOF
for /F %%A IN (%1) DO call:texto
set %2=%cont%
goto:EOF
:texto
set /a cont=1+cont
goto:EOF
Funcion GetOS:
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetOS os
::
:: By: Ritchie Lawrence, 2003-09-18. Version 1.0
::
:: Func: Returns the O/S version; NT40, 2000, 2002 or 2003.
:: For NT4/2000/XP/2003.
::
:: Args: %1 var to receive O/S version (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "cmd=net config work^|findstr/b /c:"Soft""
for /f "tokens=1-2 delims=." %%a in ('%cmd%') do (
for %%z in (%%a%%b) do set o=%%z)
endlocal & set "%1=%o:40=NT40%" & (goto :EOF)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Funciones de comprobaciones
Funcion, averiguar si un servicio esta corriendo:
Código:
:: Autor ne0x
:: Sintaxis:
:: call:svc nombre variable
:: nombre Nombre del servicio a chequear
:: variable Nombre de la variable en la que se pondra la respuesta en dato boleano
:svc
net start | find "%~1" > nul
if %errorlevel%==0 (
set %2=0
) ELSE (
set %2=1
)
goto:EOF
Funcion, averiguar si se ha iniciado un proceso:
Código:
:: Autor ne0x
:: Sintaxis
:: call:pr nombre variable
:: nombre Nombre del proceso a chequear
:: variable Nombre de la variable en la que se guardara la respuesta en tipo boleano.
:pr
taskklist | find "%~1"
if %errorlevel%==0 (
set %2=0
) ELSE (
set %2=1
)
goto:EOF
Funcion TIMER
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Timer ID
::
:: By: Ritchie Lawrence, 2002-10-10. Version 1.0
::
:: Func: Returns number of seconds elapsed since the function was last
:: called and first called. For NT4/2000/XP/2003.
::
:: Args: %1 (by ref) The first time this function is called, this variable
:: is initialised to '<last> <first> <init>' where <last> and <first>
:: are zero and <init> is the number of elapsed seconds since
:: 1970-01-01 00:00:00. This value is used by subsequent calls to
:: determine the elapsed number of seconds since the last call
:: (<last>) and the first call (<first>).
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS&call set ID=%%%1%%
set t=2&if "%date%z" LSS "A" set t=1
for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do (
for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do (
set %%a=%%d&set %%b=%%e&set %%c=%%f))
for /f "tokens=5-7 delims=:. " %%a in ('echo/^|time') do (
set hh=%%a&set nn=%%b&set ss=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
set /a j=j*86400+hh*3600+nn*60+ss
for /f "tokens=1-3 delims= " %%a in ('echo/%ID%') do (
set l=%%a&set f=%%b&set c=%%c)
if {%c%}=={} endlocal&set %1=0 0 %j%&goto :EOF
set /a l=j-c-l,f+=l
endlocal&set %1=%l% %f% %c%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Funcion, obtener Puerta de enlace:
Código:
:: Autor ne0x
:: Sintaxis
:: call:dg variable
:: variable Nombre de la variable en la que se almacenara la IP de la puerta de enlace
:dg
ipconfig | find "Puerta de enlace . . . . . 1" > %TMP%\rd.tmp
for /F %%A "tokens=11" IN (%TMP%\rd.tmp) DO set %2=%%A
goto:EOF
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetDG dg
::
:: By: Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains the default gateway. For NT4/2000/XP/2003.
:: If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive default gateway (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "g=0.0.0.0" & set "j="
for /f "tokens=3" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j for %%b in (%%a) do set "g=%%b" & set "j=1")
endlocal & set "%1=%g%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Funcion GetIP
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetIP ip
::
:: By: Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains the IP address of primary adapter. For NT4/2000/XP/2003.
:: If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive IP address (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1")
endlocal & set "%1=%i%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Funcion GetMAC
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetMAC mac
::
:: By: Ritchie Lawrence, 2003-09-24. Version 1.0
::
:: Func: Obtains the MAC address of the primary adapter in the format of
:: XX-XX-XX-XX-XX-XX. If the function fails 00-00-00-00-00-00 is
:: returned. For NT4/2000/XP/2003.
::
:: Args: %1 var to receive MAC address (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "m=00-00-00-00-00-00" & set "i=" & set "j="
set "n=0" & set "c=ipconfig/all" & set "f=findstr"
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1") & set "j="
if not defined i endlocal & set "%1=%m%" & goto :EOF
for /f "delims=:" %%a in ('%c%^|%f%/n IP.Address.*%i%') do set /a n=%%a-6
for /f "delims=" %%a in ('%c%^|more/e +%n%^|%f% Physical.Address') do (
if not defined j for %%b in (%%a) do set "m=%%b" & set "j=1")
endlocal & set "%1=%m%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Funcion GetNA
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetNA na
::
:: By: Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains network address of primary adapter. For NT4/2000/XP/2003.
:: If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive network address (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "n=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j (for %%b in (%%a) do set "i=%%b" & set j=1)) & set "k="
for /f "skip=1 tokens=1,3-4" %%a in ('route print^|findstr/b /c:" "') do (
for %%e in (%%a) do set "x=%%e" & for %%f in (%%b) do set "y=%%f"
for %%g in (%%c) do set "z=%%g"
for /f "tokens=1-3" %%a in ('echo/%%x%% %%y%% %%z%%') do (
if not defined k if "%%c"=="%i%" if "%%b"=="%i%" set k=1 & set n=%%a))
endlocal & set "%1=%n%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Funcion GetSM
Código:
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:GetSM sm
::
:: By: Ritchie Lawrence, 2003-09-22. Version 1.0
::
:: Func: Obtains the subnet mask of primary adapter. For NT4/2000/XP/2003.
:: If functions fails, 0.0.0.0 is returned.
::
:: Args: %1 var to receive subnet mask (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS & set "i=0.0.0.0" & set "m=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
if not defined j (for %%b in (%%a) do set "i=%%b" & set j=1)) & set "k="
for /f "skip=1 tokens=2-4" %%a in ('route print^|findstr/b /c:" "') do (
for %%e in (%%a) do set "x=%%e" & for %%f in (%%b) do set "y=%%f"
for %%g in (%%c) do set "z=%%g"
for /f "tokens=1-3" %%a in ('echo/%%x%% %%y%% %%z%%') do (
if not defined k if "%%c"=="%i%" if "%%b"=="%i%" set k=1 & set m=%%a))
endlocal & set "%1=%m%" & goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Script para extraer el PID de un proceso
Código:
@echo off
:: Script para extraer el PID de un proceso
:: By Sdc
FOR /F "tokens=1,2" %%i IN ('tasklist') DO (
IF "%%i"=="PROCESO1.exe" (
SET pid1=%%j
)
IF "%%i"=="PROCESO2.EXE" (
SET pid2=%%j
)
)
Script para extraer el valor de una clave del registro
Código:
@echo off
:: Script para extraer el valor de una clave del registro
:: By nhaalclkiemr
:: Special thanks to Sdc
reg export "RUTA_CLAVE" "temp.tmp"
if not %errorlevel%==0 goto error
type temp.tmp | find "NOMBRE_CLAVE" > cadena_encontrada.tmp
del /S /F /Q /A:- temp.tmp
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO set var="%%I"
if "%var%"=="" goto error
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO (
call:PARSEA %%I
)
goto :EOF
:PARSEA
del /S /F /Q /A:- cadena_encontrada.tmp
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
:: Aqui va el bat, el valor de la clave queda guardado en la variable PP
exit
:error
:: Aqui va el bat de error en caso de que la RUTA_CLAVE o NOMBRE_CLAVE no exista
exit
Script para ejecutar un archivo BAT con salida nula
Código:
@echo off
:: Script para ejecutar un archivo BAT con salida nula
:: By nhaalclkiemr
if exist temp.bat goto mibat
copy /Y %0 temp.bat>>NUL
call temp.bat>>NUL
exit
:mibat
:: Aqui va el bat
del /S /F /Q /A:- temp.bat
exit
Conocer si el valor de una variable es un numero o otro caracter
Código:
:: Conocer si el valor de una variable es un numero o otro caracter
:: By Sdc
:: Aqui partimos de que tenemos una variable r
set /a x=%r%*1
if "%x%"=="%r%" (REM Es un numero) else (REM No es un numero)
Ejecutar una aplicación como SYSTEM
Código:
@echo off
:: Ejecutar una aplicación como SYSTEM
:: Puedes ejecutarla inmediatamente o programarla para cuando quieras
:: Tal como está el codigo está programado para ejecutar al intantante la aplicación
:: Borra los comentarios REM para ahorrar codigo y fijate en lo que pone
:: By nhaalclkiemr
set a=0
set z=%TIME:~0,2%
if "%TIME:~0,1%"==" " set z=0%TIME:~1,1%
if "%TIME:~8,1%"=="," goto normal
if "%TIME:~10,1%"=="," goto 2caso
if "%TIME:~12,1%"=="," goto 3caso
:normal
set x=%TIME:~3,2%
goto a
:2caso
set x=%TIME:~4,2%
goto a
:3caso
set x=%TIME:~5,2%
:a
set /A a=%a%+1
if "%x%"=="08" set x=8
if "%x%"=="09" set x=9
if "%a%"=="1" set /A x=%x%+1
REM El segundo 1 especifica el tiempo en minutos que tardará en ejecutarse la aplicación, es modificable
REM Solo se puede sumar como máximo 86400 minutos, de lo contrario pueden producirse errores
:e
if %x% GTR 59 set /A z=%z%+1
if %z% GTR 23 set /A z=%z%-24
for /L %%A in (0,1,9) do if "%z%"=="%%A" set z=0%z%
if %x% GTR 59 set /A x=%x%-60
if %x% GTR 59 goto e
at.exe %z%:%x% AQUITUPROGRAMA.EXE
REM En lugar de lo anterior puedes poner lo siguiente si quieres que la aplicacion sea visible:
REM at.exe %z%:%x% /interactive AQUITUPROGRAMA.EXE
REM %z% y %x% son la hora y los minutos a los que se ejecutará la aplicación, puedes poner otra cosa si quieres
if %a%==11 goto b
if not %errorlevel%==0 goto a
schtasks /run /tn at1
REM Esta ultima linea ejecuta inmediatamente la aplicación, si la estás programando para una hora determinada borra esta linea
exit
:b
set a=0
if %x% LEQ 9 set x=0%x%
:c
set /A a=%a%+1
schtasks /create /tn temp /tr AQUITUPROGRAMA.EXE /sc once /st %z%:%x%:00 /ru System
REM Esto se ejecutará en caso de que el comando AT falle, es un intento alternativo, de esta manera no se puede hacer visible
if %a%==11 goto error
if not %errorlevel%==0 goto c
schtasks /run /tn temp
REM Esta ultima linea ejecuta inmediatamente la aplicación, si la estás programando para una hora determinada borra esta linea
exit
:error
:: Aqui va el BAT que se ejecuta en caso de que se produzca un error
Configuracion IP
Código:
:: Autor: pantocrator
:: MAs información: http://pantocrator-blog.blogspot.com/
@Echo OFF
echo [requerido] Primer parametro %1 es para ip estatica.
echo [requerido] Segundo parametro %2 es la mascara de red.
echo [requerido] Tercer parametro %3 es la puerta de enlace.
echo [opcional] Cuarto parametro %4 es el servidor dns primario
If [%1] == [] GOTO QUIT
If [%2] == [] GOTO QUIT
If [%3] == [] GOTO QUIT
echo Starting %0
Echo ....................Configurando IP address en Conexi¢n de rea local a %1 con NetMask %2
netsh interface ip set address name="Conexi¢n de rea local" source=static addr=%1 mask=%2
Echo ....................Configurando Gateway en Conexi¢n de rea local a %3
netsh interface ip set address name="Conexi¢n de rea local" gateway=%3 gwmetric=1
If [%4] == [] GOTO QUIT
Echo ....................Configurando DNS en Conexi¢n de rea local a %4
netsh interface ip set dns name="Conexi¢n de rea local" source=static addr=%4 register=primary
GOTO QUIT
:QUIT
ECHO ON