Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#12201
Cita de: DameBanda en  6 Noviembre 2011, 14:02 PM
Mira, no se si se te ajusta mucho, pero un usuario pregunto eso hace un tiempo
te dejo el link
http://foro.elhacker.net/scripting/solucionado_batch_ayuda_con_for_analizar_bitrate_mp3_de_archivos-t322007.0.html

gracias d nuevo un programa de aquel ejemplo me sirve para salir del paso:

Código (dos) [Seleccionar]
mplayer "test.aac" -frames 0 | findstr "kbit"

Pero sigo buscando la solución para poder usar una api correctamente con rundll32.exe

¿¿¿¿Nadie lo ha intentado nunca????

saludos
#12202
Vale muchas gracias por la aclaración Leo

Al final lo he resuelto sin engorronear mucho el código xD


Código (dos) [Seleccionar]
@echo off

Colous writesec "[7] Eliminando bla bla bla bla..."
echo+
Colous writesec "[08] $195          $180 0%%"

call :PROGRESSBAR 50
pause>nul

:#######################################################

:PROGRESSBAR
:~~~~~~~~~~~

If %1==10 (Set PROGRESS=$219)
If %1==20 (Set PROGRESS=$219$219)
If %1==30 (Set PROGRESS=$219$219$219)
If %1==40 (Set PROGRESS=$219$219$219$219)
If %1==50 (Set PROGRESS=$219$219$219$219$219)
If %1==60 (Set PROGRESS=$219$219$219$219$219$219)
If %1==70 (Set PROGRESS=$219$219$219$219$219$219$219)
If %1==80 (Set PROGRESS=$219$219$219$219$219$219$219$219)
If %1==90 (Set PROGRESS=$219$219$219$219$219$219$219$219$219)
If %1==100 (Set PROGRESS=$219$219$219$219$219$219$219$219$219)

colous 10 0 04,03 %PROGRESS%
colous 10 0 15,03 %1%%
Goto :EOF
#12203
Cita de: $Edu$ en  6 Noviembre 2011, 14:52 PM
Queres que muestre "$219" ? no uses el nombre de la variable como 10, usalo como p10 por ejemplo

Hola edu, gracias por contestar, pero esa solución no la puedo aplicar... Porque lo que intento es setear el argumento del CALL

Mira, esto es lo que intento hacer:

Código (dos) [Seleccionar]
@echo off

Colous writesec "[7] Eliminando bla bla bla bla..."
echo+
Colous writesec "[14] $195          $180 0%%"


REM Llamo a mi procedimiento con el argumento "50"
call :PROGRESSBAR 50
pause>nul

:#######################################################

:PROGRESSBAR
:~~~~~~~~~~~

Set 10=$219
Set 20=$219$219
Set 30=$219$219$219
Set 40=$219$219$219$219
Set 50=$219$219$219$219$219
Set 60=$219$219$219$219$219$219
Set 70=$219$219$219$219$219$219$219
Set 80=$219$219$219$219$219$219$219$219
Set 90=$219$219$219$219$219$219$219$219$219
Set 100=$219$219$219$219$219$219$219$219$219

REM El dibujito...
colous 14 0 04,03 %%1%

REM El porcentaje...
colous 14 0 15,03 %1%%

Goto :EOF



El resultado es esto:




Y mi intención es que quede así:

#12204
Hola

Necesito crear una variable de esta manera:

Código (dos) [Seleccionar]
Set 10=$219

El problema viene cuando intento usarla...

Código (dos) [Seleccionar]
Echo %10%

Se que el problema es porque el código de arriba en realidad hace esto:

Código (dos) [Seleccionar]
Echo %1

¿Como puedo evitar el maldito argumento en este caso?
#12205
Cita de: DameBanda en  5 Noviembre 2011, 15:23 PM
Bueno, espero haberte aclarado algo  ;)

Muchas gracias por tu respuesta, pero eso ya lo conocía

Y si, lo que intento es pasar las propiedades de un archivo (El Bitrate de un archivo de música) a una variable, pero eso no se puede ver con batch a menos que use la api de windows o la de mi ejemplo, en cualquier caso, no se usar ninguna de las dos xD

Un saludo
#12206
No he probado demasiado mi modificación pero creo que no he cometido ningún error, ya nos cuentas  :)


Código (dos) [Seleccionar]
@Echo off

Rem EleKtrO H@ckeR

Set ArchExe="menu.exe"
Set Ruta1= "Unidad1:\Direct\SubDirect\"
Set Ruta2= "Unidad2:\Direct\SubDirect\"

Set Item1="Ruta1\ArchExe"
Set Item2="Ruta2\ArchExe"

Rem  Comienzo, pregunta por el 1º
:Paso1
IF EXIST "%Item1%" (goto :Paso2) ELSE (goto :End)

Rem  Si encontró el 1º, pregunta por el 2º
:Paso2
IF EXIST "%Item2%" (goto :Paso3) ELSE (goto :End)

################################################################################################################################>nul

:Paso3

REM Seteamos la fecha y la hora de creacion del Item 1 e Item 2...

For /F "Tokens=1,2,3*" %%a in ('dir /tc/od "ITEM1.EXE" ^| Find "ITEM1.EXE"') do (
Set Fecha_de_creacion_Item1=%%a
Set Hora_de_creacion_Item1=%%b
)

For /F "Tokens=1,2,3*" %%a in ('dir /tc/od "ITEM2.EXE" ^| Find "ITEM2.EXE"') do (
Set Fecha_de_creacion_Item2=%%a
Set Hora_de_creacion_Item2=%%b
)

Rem  Compara el 1º con el 2º

:Creation Date

REM Si la fecha de creacion del item 1 es mayor que el 2...
If %Fecha_de_creacion_Item1:~-0,5% GTR %Fecha_de_creacion_Item2:~-0,5% (Goto :Paso4)

REM Si la fecha de creacion del item 1 es menor que el 2...
If %Fecha_de_creacion_Item1:~-0,5% LSS %Fecha_de_creacion_Item2:~-0,5% (Goto :End)

REM Si la fecha de creacion del item 1 es igual que el 2...
If %Fecha_de_creacion_Item1:~-0,5% EQU %Fecha_de_creacion_Item2:~-0,5% (Goto :Creation Hour)

echo+ ERROR en la comparacion
Pause

:Creation Hour

REM Si la hora de creacion del item 1 es mayor que el 2...
If %Hora_de_creacion_Item1% GTR %Hora_de_creacion_Item2% (Goto :Paso4)

REM Si la hora de creacion del item 1 es menor que el 2...
If %Hora_de_creacion_Item1% LSS %Hora_de_creacion_Item2% (Goto :End)

REM Si la hora de creacion del item 1 es igual que el 2...
If %Hora_de_creacion_Item1% EQU %Hora_de_creacion_Item2% (Goto :End)

echo+ ERROR en la comparacion
Pause

################################################################################################################################>nul

Rem  Reemplaza
:Paso4
Copy /Y "%Item1%" "%Item2%" >nul
goto :End

:End
"Menu.exe"
exit
#12207
Cita de: geormarsch en  5 Noviembre 2011, 19:50 PM
no entendi la parte de tu codigo chequear disco duro ?

Código (dos) [Seleccionar]
echo S | chkdsk %homedrive% /F /R /X >nul

supongo que lo que no entendiste es eso

al ejecutar el chkdsk en el disco principal, windows pide una confirmación para ejecutarlo en el proximo reinicio (S/N), pues con el echo S | confirmamos S automáticamente.

/F  es para corregir los sectores dañados

/R para algo parecido

/X para demontar la unidad y poder analizarla (%homedrive%) (en el proximo reinicio del pc)


saludosss
#12208
Empiezo a pensar que es una pregunta trampa...  :¬¬

http://www.computerhope.com/sethlp.htm

En esa página explica la sintaxis de SET version de MSDOS... sencillamente no se puede hacer XDDD

En otra página me he repasado todos los comandos que trae el msdos, y no he encontrado ninguno que se asemeje a lo que buscas... Ninguno parece permitir que el usuario interactue con el teclado para definir variables ...ni nada  :(


Solo se me ocurre que pruebes estos comandos a ver si sacas algo en clave xD

Código (dos) [Seleccionar]

Set /?

Set help

help




Saludos.
#12209
dios mio, pero como pueden mandar trabajos sobre msdos en un ciclo??? eso no le sirve a nadie hoy en día, xD te están robando el dinero!

de todas formas... ¿Seguro que lo haces bien?:

http://en.wikipedia.org/wiki/List_of_MS-DOS_commands

Según la Wikipedia se hace exactamente igual... Pero bueno no tengo MSDOS delante para probar  :P

Código (dos) [Seleccionar]
@echo off
set /p var=Teclea algo y pulsa enter xD:
echo %var%
pause
exit


Bueno, por probar que no falte... Te digo lo que se haria con ese txt bajo la consola de windows actual  :xD:

Código (dos) [Seleccionar]
@echo off
For /F "tokens=*" %%a in ('type "TEXTO.TXT"') do (Set Variable=%%a)
echo %variable%
pause
exit


Suerte.  :xD
EleKtrO HackeR.
#12210
Cierto, usas muchas variables y conviene "resetearlas" al volver al :MENU, porque sino aunque dejes vacía alguna de las variables como talla dire y eso, se tomará la variable anterior... espero que se me entienda xD

aparte de eso, dejame mejorartelo un poquito lo que pueda  :xD


PD: Copia este código tal cual, para probarlo, aunque veas caracteres raros al copiar no te preocupes, en la consola salen bien las palabras con los acentos y eso  ::)

Leo es un crack con el tema de trabajar sobre archivos de texto así que yo esperaría a ver si te da una solución para una mejor busqueda sobre la lista de clientes...  ;-)





Código (dos) [Seleccionar]

@echo off
title Base de datos Clientes
color fc

If not exist "%homedrive%\clientes.txt" (echo.>"%homedrive%\clientes.txt")


:############################################################

REM En esta parte no he correjido nada importante, solo sintaxis y gramática xD, el "ELSE" del final...

REM Reseteando variables...


:MENU

Set o=
set check=
Set de=
set bo=

cls
echo.
echo %time%
echo  ##########
echo.
echo.
echo  1.- Agregar Cliente
echo  2.- Buscar dentro de la Base de datos
echo  3.- Mostrar el contenido de la Base de datos
echo  4.- Borrar Base de datos
echo.
echo.
set /p o= Elija una opci¢n:
if not defined o (goto :menu)
if %o%==1 (goto :add)
if %o%==2 (goto :b)
if %o%==3 (goto :x)
if %o%==4 (goto :dl)
goto :menu



:############################################################

REM Aqui nos aseguramos de que ningún campo queda vacío...


:add

set name=
set dire=
set n=
set c=
set t=
set s=


cls
echo.
set /p name=- Nombre de cliente: & Call :verify name
set /p dire=- Direcci¢n        : & Call :verify dire
set /p n=- N£mero           : &    Call :verify n
set /p c=- Compras Recientes: &    Call :verify c
set /p t=- Talla            : &    Call :verify t
set /p s=- Sexo             : &    Call :verify s
echo Cliente   : %name%>>%homedrive%\clientes.txt
echo Direcci¢n : %dire%>>%homedrive%\clientes.txt
echo N£mero    : %n%>>%homedrive%\clientes.txt
echo Compras   : %c%>>%homedrive%\clientes.txt
echo Talla     : %t%>>%homedrive%\clientes.txt
echo Sexo      : %s%>>%homedrive%\clientes.txt
echo -------------------------------------------------;>>%homedrive%\clientes.txt
echo Generado Correctamente.
echo+
pause
goto :menu


:verify
if not defined %1 (
set %1=Ninguno
goto :eof
) ELSE (
goto :eof
)


:############################################################


REM no te recomiendo usar setlocal si hay productos o datos que contengan caracteres especiales como "Nike!" ...pues no los vas a encontrar xD

REM en el metodo de buscqueda no he podido hacer nada mejor, habria sido fácil usando tail y txtback porque cada cliente esta separado en 7 líneas, pero bueno, no me he kerido comer más el coco  :xD

:b
cls
echo+
set /p bo=- ¨Que desea buscar dentro de la Base de datos?:

find "%bo%" "%homedrive%\clientes.txt" >nul
If %errorlevel% equ 0 (
find "%bo%" "%homedrive%\clientes.txt"
echo+
pause
goto :menu
) ELSE (
echo+
echo No se ha encontrado ninguna coincidencia, Intentelo de nuevo...
echo+
pause
goto :menu
)



Goto :menu


:############################################################


REM Ahora el código reconoce varias respuestas (si,SI,Si,sI,sí,Sí - No,no,NO,nO) en cambio tu código solo reconocia dos (Aunque no te lo parezca así era).

:dl


cls
echo.
echo  Se borrar... la base de datos, ¨Est... seguro?  Si/No
echo  Se perder...n todos los datos guardados...
set /p de=^>^>

echo %de%| findstr /I "^S.$" >nul
If %errorlevel% equ 0 (goto :del)

echo %de%| findstr /I "^NO$" >nul
If %errorlevel% equ 0 (goto :menu)

Goto :menu

:############################################################

REM Mas vale prevenir que curar, Los HDD's a veces se estropean, mejor nos aseguramos de que la lista se borre de verdad xD

:del

cls
echo+
echo  Borrando...
ping -n 2 localhost >nul

del /q /f "%homedrive%\clientes.txt" >nul 2>&1
IF %ERRORLEVEL% EQU 0 (
       echo Eliminado.
echo+
       pause
       goto :menu
) ELSE (
       cls        
       echo No se pudo borrar la lista.
echo+
       pause
goto :checkeo
)


:############################################################

REM Y esta parte me la invento xD


:checkeo
cls
echo  ¨Quiere iniciar un escaneo de errorer de su disco duro? Si/No
echo  Se reiniciar... el Pc...
set /p CHECK=^>^>

echo %CHECK%| findstr /I "^S.$" >nul
If %errorlevel% equ 0 (
            echo S | chkdsk %homedrive% /F /R /X >nul
            shutdown -r -t 10
)


echo %CHECK%| findstr /I "^NO$" >nul
If %errorlevel% equ 0 (goto :menu)

Goto :menu


:############################################################

REM En el antiguo código, Sí la lista es demasiado larga no se mostraría entera... Queda corregido por si acaso.

:x
cls
echo.
type "%homedrive%\clientes.txt" | More /E /C
echo+
pause
goto :menu