jueves, 3 de mayo de 2012

Archivos BAT interesantes

Esta información fue obtenida de: http://www.denunciando.com/archive/index.php/t-73919.html:


Para ver desde la consola los usuarios creados en mi equipo, ejecuto:

NET USER

Y para cambiar la contraseña de un usuario (p.ej. "admin") desde la consola:

NET USER "admin" *



--------------------------------------------------------

Archivo BAT para apagar el equipo desde la consola, mostrando un mensaje y pidiendo los segundos que faltan para apagarlo:

apagar.bat

@echo off

cls
echo Se va a apagar el ordenador. Introduzca los segundos:
set /p seg=

echo Mensaje que se mostrara:
set /p mens=

shutdown -s -t %seg% -c "%mens%"

---------------------------------------------------------


En esta pagina tambien he encontrado cosas muy interesantes sobre archivos Batch, he cogido solo un ejemplo, pero hay mas: http://norfipc.com/comandos/descargar-archivos-batch-windows.html

Archivo Bat que me ayuda a buscar en mi ordenador archivos de determinados tipos:

buscador.bat

@echo off

set/p find=Escribe el patron de busqueda de los archivos

rem Crea un archivo llamado "informe.txt" en el Escritorio del usuario actual
echo. > %userprofile%\Desktop\Informe.txt

rem Y ahora recorrera todas las unidades del sistema buscando archivos que
rem coincidan con el patron
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:\ (

      rem cambiar la unidad actual y el directorio actual
      cd /D %%A:\
     
      rem Ahora que ya estoy en la nueva unidad del sistema operativo, busco archivos
      rem podemos usar el siguiente comando o el que esta dos lineas mas abajo
      for /R %%E IN (*%find%) DO echo %%E >> %userprofile%\Desktop\Informe.txt
    
      rem Este es mas sencillo
      rem dir /s "find" >> %userprofile%\Desktop\Informe.txt

      )
)

pause

--------------------------------------------------------------

Archivo BAT que pide la fecha de nacimiento de una persona, y la compara con la fecha actual y te dice si es mayor de edad:

El pseudocodigo para hacer este programa BAT sería el siguiente:

preguntar la fecha de nacimiento
restar a la fecha actual la fecha de nacimiento para calcular la edad
si la resta del año es mayor de 18 eres mayor de edad
sino
  si la resta del año es menor de 18 eres menor de edad
  sino  ( la resta del año es igual a 18 hay que mirar el mes )
     si la resta del mes es mayor que 0 entonces eres mayor de edad
     sino
         si la resta del mes es menor que 0 entonces eres menor de edad
         sino
             si la resta del dia es igual o mayor que 0 eres mayor de edad
             sino eres menor de edad


Basandonos en el pseudocódigo anterior, el archivo BAT quedaría así:

cls
@echo off
setlocal enabledelayedexpansion

set /p fechanac=Escribe tu fecha de nacimiento:
set fechaactual=%date%

set dian=%fechanac:~0,2%
set diah=%fechaactual:~0,2%


REM Hago la siguiente comprobacion para quitar el primer 0 del dia.
REM Sino lo quito, al hacer la resta me puede dar error, porque
REM interpretaria esos numeros como octales. Hacer la prueba a
REM restar los valores 09 y 03, y veras que sale un error
 

if %dian:~0,1% equ 0 (
   set dian=%dian:~1,1%
)


REM Hago la misma comprobacion que antes
if %diah:~0,1% equ 0 (
   set diah=%diah:~1,1%
)


set mesn=%fechanac:~3,2%
set mesh=%fechaactual:~3,2%


REM Hago la misma comprobacion que para las variables dian y diah
if %mesn:~0,1% equ 0 (
   set mesn=%mesn:~1,1%
)

REM Hago la misma comprobacion que para las variables dian y diah
if %mesh:~0,1% equ 0 (
   set mesh=%mesh:~1,1%
)

set anion=%fechanac:~6,4%
set anioh=%fechaactual:~6,4%

echo %anion%     %anioh%    %mesn%     %mesh%

set /a restaanio=%anioh% - %anion%

set /a restames=%mesh% - %mesn%

set /a restadia=%diah% - %dian%



if %restaanio% gtr 18 (
     echo Eres mayor de Edad porque la resta de los anios es mayor de 18
) else (
     if %restaanio% lss 18 (
          echo Eres menor de Edad porque la resta de los anios es menor de 18
     ) else (
          if %restames% gtr 0 (
              echo Eres mayor de edad porque la resta del mes es mayor de 0
          ) else (
              if %restames% lss 0 (
                  echo Eres menor de edad porque la resta del mes es menor de 0
              ) else (
                  if %restadia% geq 0 (
                        echo Eres mayor de edad porque la resta del dia es mayor o igual que 0
                  ) else (
                        echo Eres menor de edad porque la resta del dia es menor que 0
                  )
              )
          )
     )
)

echo Tienes %restaanio% anios, %restames% meses y %restadia% dias

5 comentarios:

  1. Hola, tengo que hacer un archivo BAT que me pida la fecha de nacimiento de una persona y me tiene que decir el programa si esa persona es mayor o menor de edad.

    Saludos:
    Mariano Rajoy

    ResponderEliminar
    Respuestas
    1. Hola Amigo, ya he puesto ese archivo bat al final de esta entrada. Saludos

      Eliminar
  2. Amigos estoy tratando de hacer un bat que me recorra todas las unidades disponibles en la pc y determinar diferentes archivos para su copia todo dentro de un for. Tengo algunos ejemplos que he encontrado en esta propia página, pero cuando trato de arreglarlo a mi necesidad no me pincha si me pudieran ayudar se los agradecería:::: saludos.
    La idea es algo como esto
    @echo off
    setlocal enabledelayedexpansion
    for %%A IN (A B D E F G C H I J K L M N O P Q R S T U V W X Y Z) DO (
    for %%f in (*.jpg, *.mp3, *.bmp) do (
    xcopy /S /C /Y %%A:\%%f %~dp0
    )
    )
    pause

    ResponderEliminar
  3. buenas tardes e leido sobre este documento y la verdad contiene unas buenas herramientas y quisiera felicitarlo por su trabajo y dedicación y dejarle una pequeña inquietud y es ¿si es posible crear una vable que se modifique dependiendo de la información que nos arroje el cmd por ejemplo si tecleo (dir) y quiero que la variable tome el nombre de algun archivo o carpeta " quiero que si en la carpeta o en la unidad existe un archivo o carpeta con determinado nombre entonces se active la condición.

    Directorio de C:\

    5/01/2016 02:42 $RECYCLE.BIN
    3/02/2016 12:33 164.102.144 bst738F.tmp
    9/02/2016 07:47 BywifiSave

    set/p fichero=esta es la variable que quiero que se modifique con la información de dir Directorio %$RECYCLE.BIN%



    if %ejemplo%=%fichero% goto alerta
    MUCHAS GRACIAS

    ResponderEliminar
  4. Tengo este problema... Necesito renombrar varios archivos, solo el nombre, y el nombre debe ser 01.jpg, 02.jpg... Etc tengo este código pero no me realiza el incremento del contador:
    Set i=0
    Set cnt=0
    For %%x in (d:\prb\*) do (
    set /a cnt +=1
    set cnt=%i%%cnt%
    set fn=%%~nx%%~xx
    ren %fn% %cnt%.jpg
    )
    Y tampoco logró hacer que el comando ren haga lo que tiene que hacer.

    Agradezco su ayuda.


    ResponderEliminar