-> Programación BATCH Avanzada. (nuevo)

Iniciado por sirdarckcat, 24 Julio 2006, 10:01 AM

0 Miembros y 1 Visitante están viendo este tema.

uroboros

El tema de variables ningun problema; pero lo de argumentos no lo cojo por ningun lado; es en eso de %0, el astring, %~f1,  eso del directorio donde se tiene el archivo y como luego se muestran los analisis

es más, el concepto en general es lo que no comprendo. por ejemplo en este codigo
@echo off
echo Con Comillas: %1
echo Sin Comillas: %~1

el %1 a q se refiere?

o que es eso re recibir?
"Si lo que recibimos no es un archivo, sino una cadena de texto, que contiene mas de una palabra, se debe poner entre comillas, algo asi:"

si se me aclara el concepto, la idea general de los argumentos y de la semantica de sus codigos no tendré ningun problema, solo que el problema lo tengo al principio de todo y entonces ya no me funciona nada.

patovica

LEO G. muchas gracias por la respuesta, los probe y andan perfectos, los tendia que pulir un poquito para que detecte solamene el pendrive, ahora otra pregunta mas, la ideas es arragar este programa cuando se inicie window y quede latente hasta que alguien meta un pendrive y cuando sea asi me avise mediante una alerta, esta parte ya me anda, me falta como poder hacer para que quede stand by. Muchas gracias.

leogtz

Hola, con respecto a lo de Stand by, puedes hacer un bucle que cada determinado tiempo, muestre las unidades extraibles conectadas, algo asi :
@echo off
:Code
ping -n 20 127.0.0.1>nul
...Codigo
goto:Code


Ahora, hice este otro Script, muestra las USB´S, es parecido a los demás, solo que ahora muestra la lista asi :
A:
B:
C:
etc.

@echo off
:Code
nircmd wait 3000
for /f "tokens=2 skip=1" %%x in ('fsutil fsinfo drives ^| more') do (
fsutil fsinfo drivetype %%x | find /i "extra" > nul 2>&1 && (
for /f "tokens=1" %%c in ('echo %%x') do (
echo %%c
)
)
)
for /f "tokens=1 skip=2" %%x in ('fsutil fsinfo drives ^| more') do (
fsutil fsinfo drivetype %%x | find /i "extra" > nul 2>&1 && (
for /f "tokens=1" %%c in ('echo %%x') do (
echo %%c
)
)
)
nircmd wait 1000
cls
goto:Code


El codigo usa a nircmd.exe, descargalo de nirsoft.net.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

leogtz

Hola, de esta otra forma tambien se puede  ;D :

@echo off
for /f "tokens=3" %%x in ('echo list volume ^| diskpart ^| find /i "extra"') do (
echo %%x:
)
>nul (pause)
exit /b


Saludos.

Con WMIC tambien se pude, pero tengo problemas con el ahorita.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

leogtz

Hola, tal ves te interese este, loo hice para que detecte las unidades extraibles y su espacio :
@echo off
for /f "tokens=3,6,7" %%a in ('echo list volume ^| diskpart ^| find /i "extra"') do (
echo %%a:        %%b : %%c
)
>nul(pause)
exit /b
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

patovica

Estimado LEO Gtz., de los programas que me mandastes, andan, pero lo que no me puedo dar cuenta es como puedo trabajar con las unidades, ya que si bien las ve, el programa solo se limita a hacer un loop y mostrar lo que encuentra pero no se como puedo preguntar por una especifica, por ejemplo yo quiero que me avise si alguien puso un pendrive en mi maquina en mi caso la letra es H:, Y otro tema que tambien quiero ver y no encuentro nada para leer, es que cuando se ejecute el archivo bat. no muestre la ventana de DOS, o sea que quede corriendo como en segundo plano.

leogtz

El codigo de abajo, constantemente esta buscando la unidad F:\, si la encuentra lanza el mensaje, si no, continua buscando.
Código (dos) [Seleccionar]
@echo off
:Bucle
set buscar=F:\
echo Buscando.
fsutil fsinfo drives | more | find /i "%buscar%" && (
echo:
echo Unidad %buscar% encontrada.
pause>nul
goto:eof
) || (
cls
goto:Bucle
)
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Meta

#97
Hola:

Muy currado el tutorial. He hecho una prueba con el bat.


ECHO @OFF
ECHO ^<head^>^<title^>Prueba del BAT^</title^>^</head^>^<body^>Esto es una prueba^<p^>^<ahref="directorio/prueba2.html"^>Enlace 2^</a^>^</p^>^</body^>^</html^> > prueba.html
MKDIR directorio
CD directorio
ECHO ^<head^>^<title^>PRUEBA 2^</title^>^</head^>^<p^>^<ahref="../prueba.html"^>VOLVER^</a^>^</p^>^<body^>Esto es una prueba del html dentro de la carpeta directorio.^</body^>^</html^> > prueba2.html


Como podrás comprobar funciona. Pero quiero hacer otra cosa que no se si se puede hacer  o al menos vamos a intentarlo. Lo que quiero hacer un logo o una imagen cualquiera tamaño de nuestro avatar de este foro y copiar su código en el bat. Me imagino que se podrá obtener con un hexadecimal. Probamos este mismo que tiene fama www.winhex.com

Ahora me dirás si se puede hacer.

Un cordial saludo.


EDITO:

PD: Aquí hay algo que deberías incluir en tu tutorial.
http://www.cristalab.com/tips/49576/programacion-avanzada-de-archivos-en-lotes-.bat.html
http://www.cristalab.com/tips/48410/programacion-batch-con-archivos-.bat.html
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

leogtz

Algo como esto:

@echo off                                               
mode con cols=100 lines=100                                                                                 
echo                                !!!i1/)))$$$$$$)))/ii!                           
echo                          !i1))$$$$$$$$$$$$$$$$$$$$$$$$)11i!                     
echo                       i))$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$11!                 
echo                 i)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$)!             
echo              i$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$/iii!       
echo             )$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$))ii))1     
echo          !!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$1  1/!!1)   
echo        )$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!11i/ii!)$))
echo      ))$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$i//i!))!$$$$i
echo     )$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$)))$$$!!ii!!)$$$$)
echo    1$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$i   i)$$))$$$$)ii
echo   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!)$$$$$$$$$//ii11/)$$$
echo ii$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$1 11$$$$$$$$$$$$$$$$!!
echo $$$$$$$$$$$i!    !)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$)  !$$$$$$$$$$$$$)!   
echo !$$$$$$$$)          //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$)$$$$$$$! 11$$$$$$$$$1     
echo )$$$$)ii              $$$$i  !!$$$$               )$$$i   $$$//                   
echo $$$$) !!ii            )$$$!  !!$$))               i$$$1   1$$!!                   
echo $$$$!i$$$$))          )$$$!  !!$$11               !$$$/   !$$ii                   
echo /$$$ ))) /$$$!        1$$$!  !!$$ii                11$$    /$$$                   
echo i$$$i!$$!1$$$i        1$$$!  !!$$!!                !!$$    !$$$                   
echo $$$$!   $$$$1        !)11     ))                    ))     111                   
echo ii$$$$$$$$$$i !!TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT   
echo    !i//))11   TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT   
echo.                                                                                 
echo        !))))T                                   T))))!            TTTTTTTTTTTT   
echo     !66ddddddd))                             )dddddddd6!!       TTdddddddddddd!!
echo    )ddd!     (ddd                           dd((     Tddd)      TTdd!           
echo    (d66      TdddT       !!       !!       !ddTT      6dd6      TTdd!           
echo    (ddd!               !!dd     !!dd!      !dd((                TTdd!           
echo    !dddd(TT            !!dd     !!dd!       6ddd6)!!            TTdd!           
echo        )(ddddddd(      !!dd     !!dd!         TT(6ddddd66!      TTddddddddddd(   
echo            !)ddddT     !!dd     !!dd!             !!T6ddd6      TTdd!           
echo    TT         ddd(     !!dd     !!dd!      TT!        )ddd!     TTdd!           
echo   !ddTT       66d6     !!dd     !!dd!      (d6        Tddd!     TTdd!           
echo    )ddd6T!!!T6ddd!       dd(   !66dd!       dddd)!  !)ddd(      TTdd()))))))))!!
echo     )dddddddddddT        )dddddd((dd!       !dddddddddd66       TTddddddddddddTT
echo      !!(6ddd6)!!          T6666T  ))          ))66dd6(T         !!))))))))))))!!
pause>nul
exit /b 0
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Meta

No me refería eso, pero ahora que lo veo, me encanta. Buen dibujo,   ;)

Me refiero que cojas una imagen cualquiera. Por ejemplo imagen.jpg.



Con ella guardar la foto tal como se ve aquí. que al ejecutar el bat, aparezca lo que se ve.

¿Eso es posible?
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/