elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (SOLUCIONADO) [ Batch ] Problemilla con variable Set /a...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (SOLUCIONADO) [ Batch ] Problemilla con variable Set /a...  (Leído 6,910 veces)
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
(SOLUCIONADO) [ Batch ] Problemilla con variable Set /a...
« en: 18 Marzo 2011, 07:12 am »

hola, ya tengo otro problema que me trae de cabeza :S les recorto el trozo que interesa, del script:

Código
  1. Set Num=0
  2.  
  3. blabla... ...& findstr blablabla & call :proceso
  4.  
  5. :proceso
  6. IF %ERRORLEVEL% EQU 0 set /a num+=1 & blablabla lo que sigue...
  7.  
  8. :Terminar
  9. set /a num+=6 & mode con lines=%num%
  10.  
... pero el número siempre es "1", y no se porque.


Así que para probar, hice esto:
Código:
echo %num%
set num2=%num%
set /a num2+=6
echo numero nuevo:%num2%
pause
Y el resultado es esto:



¿Porque no me deja?


PD: En cambio, si repito el proceso manualmente en la consola, si que me deja, así que he pensado que el problema puede estar en los caracteres "%", pero ya he probado cambiandolos y nada...


« Última modificación: 20 Marzo 2011, 11:40 am por pitoloko » En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #1 en: 18 Marzo 2011, 09:18 am »

Si pudieras poner todo el trozo de código, y más si estás dentro de un loop FOR.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #2 en: 18 Marzo 2011, 13:53 pm »

Uf, es que si lo pongo todo va a ser un lio, ya sabes que soy d malas costumbres xDDD,

Ahí va:

Código
  1. @echo off
  2. Mode con cols=60 lines=18
  3. Set Lista=%Temp%\Lista.txt
  4. Set Num=0
  5.  
  6.  
  7. :BUSCAR
  8. for /f "tokens=*" %%a in ('dir /B *.mp3') do cls & set nombre=%%a & mediainfo "%%a" "--Inform=General;%%BitRate%%" | findstr "2..... 3....." >nul & call :MP3
  9.  
  10.  
  11. :TERMINAR
  12. cls
  13. If exist %lista% set num2=%num% & set /a num2+=6 & mode con lines=%num2% & echo+ Se han convertido correctamente %num% audios..." & type %lista% & del /q %lista% & pause >nul & exit
  14. If not exist %lista% mode con lines=3 cols=65 & echo+ No se ha encontrado ningun audio superior a +160 kbps.  & sleep 3 & exit
  15.  
  16. :MP3
  17. IF %ERRORLEVEL% LEQ 0 cls & set /a num+=1 & echo+ %nombre%>> %lista% & coreconverter.exe -infile="%nombre:~0,-5%.mp3" -outfile="%nombre:~0,-5%.mp3" -convert_to="mp3 (Lame)" -b 160 & goto:eof


la parte que falla es el "Set /a" de la subrutina ":TERMINAR", el "Set /a" de ":MP3" funciona correctamente porque se me muestra bien la variable:


« Última modificación: 19 Marzo 2011, 00:01 am por Leo Gutiérrez. » En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #3 en: 19 Marzo 2011, 00:04 am »

Código
  1. @echo off
  2. Mode con cols=60 lines=18
  3. Set Lista=%Temp%\Lista.txt
  4. Set Num=0
  5.  
  6.  
  7. :BUSCAR
  8. for /f "tokens=*" %%a in ('dir /B *.mp3') do (
  9. cls
  10. set nombre=%%a
  11. mediainfo "%%a" "--Inform=General;%%BitRate%%" | findstr "2..... 3....." >nul
  12. call :MP3
  13. )
  14.  
  15.  
  16. :TERMINAR
  17. cls
  18. If exist %lista% (
  19. set num2=%num%
  20. set /a num2+=6
  21. mode con lines=%num2%
  22. echo+ Se han convertido correctamente %num% audios..."
  23. type %lista%
  24. del /q %lista%
  25. )
  26.  
  27. If not exist %lista% (
  28. mode con lines=3 cols=65
  29. echo+ No se ha encontrado ningun audio superior a +160 kbps.
  30. sleep 3
  31. )
  32.  
  33. :MP3
  34. IF %ERRORLEVEL% LEQ 0 (
  35. cls
  36. set /a num+=1
  37. echo+ %nombre%>> %lista%
  38. coreconverter.exe -infile="%nombre:~0,-5%.mp3" -outfile="%nombre:~0,-5%.mp3" -convert_to="mp3 (Lame)" -b 160
  39. goto:eof
  40. )

Es tu código, pero poniendo cada sentencia en una línea.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #4 en: 19 Marzo 2011, 07:27 am »

Muchas gracias por las molestias que te tomas, Arreglar el código e instalarte el mediainfo, ya he "reescrito" todo el código a tu manera, para empezar a hacer las cosas bien xD...

Pero bueno, vayamos al tema, ¿que puedo hacer con el problema del "Set /A"?

saludos!


EDITO: Ya lo he solucionado, no funcionaba porque estaba dentro del "IF" (No se porque...) pero al dejarlo afuera, ya me va perfecto:


Código
  1. :END
  2.  
  3. set Num2=%num%
  4. Set /a Num2+=4
  5.  
  6. If exist %lista% (
  7. cls
  8. mode con lines=%num2% & %Centrar%
  9. color 2 & echo+
  10. Colous writesec "[7] Se han convertido correctamente [2]%num%[7] audios..." & echo+
  11. FART.exe -q %lista% \" --remove
  12. type %lista%
  13. del /q %lista%
  14. )
« Última modificación: 19 Marzo 2011, 09:19 am por pitoloko » En línea

No he vuelto, solo estoy de paso.
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #5 en: 19 Marzo 2011, 09:37 am »

Aún tengo que probar el método que me dijiste con "findstr", pero como de momento el mio creo que no da fallos, antes de probar el tuyo quiero ir por partes y terminar una cosa que aún llevo mal, se trata de esto:

Código:
mediainfo "%%a" "--Inform=General;%%BitRate%%"



Como puedo pasar el valor que me da ese comando (El número 320000), a una variable, para "jugar" con ella por ejemplo así dentro de mi script?:

Código:
For /f... blablabla...mediainfo "%%a" "--Inform=General;%%BitRate%%" > %rate% & goto :xxx

:xxx
echo Convirtiendo el archivo: %%a
echo Bitrate del archivo original: %rate%

He estado probando con "set /p" y "set" pero no consigo hacerlo...

¿Como creo la variable "rate" para luego guardar el numero en esa variable y poder usarlo como "echo %rate%"?
« Última modificación: 19 Marzo 2011, 10:55 am por pitoloko » En línea

No he vuelto, solo estoy de paso.
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #6 en: 19 Marzo 2011, 16:07 pm »

Código
  1. for /f "tokens=*" %%%% in ('mediainfo "%%a" "--Inform=General;%%BitRate%%"') do set "rate=%%~%%"
  2.  
  3. echo.%rate%
  4.  
;D
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #7 en: 19 Marzo 2011, 16:21 pm »

Código
  1. for /f "tokens=*" %%%% in ('mediainfo "%%a" "--Inform=General;%%BitRate%%"') do set "rate=%%~%%"
  2.  
  3. echo.%rate%
  4.  
;D


Pero, como haría eso dentro de este for?
Código
  1. for /f "tokens=*" %%a in ('dir /B *.mp3') do (
  2. set nombre=%%a
  3. mediainfo "%%a" "--Inform=General;%%BitRate%%" | findstr "161... 162... 163... 164... 165... 166... 167... 168... 169... 17.... 18.... 19.... 2..... 3....." >nul
  4. call :MP3
  5. )

Necesito meterlo dentro de ese for...
Se podría mezclar mi FOR con tu FOR???
Es que, como está el "findstr" de por medio, me parece algo imposible para mi...

Gracias de todas formasss por la ayuda
« Última modificación: 19 Marzo 2011, 16:29 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #8 en: 19 Marzo 2011, 16:55 pm »

Código
  1. setlocal enabledelayedexpansion
  2.  
  3. rem Por cada mp3....
  4. for /f "tokens=*" %%a in ('dir /B *.mp3') do (
  5. set "nombre=%%a"
  6. rem Seteamos el nombre para que pueda usarse globalmente...
  7.  
  8. rem Por cada mp3 sacamos su información... es el mismo código de ~xassiz.
  9. rem No sé si funcione.
  10. rem Cuando ya tenemos seteado el "rate"
  11. for /f "tokens=*" %%%% in ('mediainfo "%%a" "--Inform=General;%%BitRate%%"') do set "rate=%%~%%"
  12. rem Llamamos a MP3
  13. call :MP3
  14. )
  15.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [ Batch ] Problemilla con variable Set /a...
« Respuesta #9 en: 20 Marzo 2011, 11:40 am »

Gracias a los 2, parece que ya lo he solucionado.
En línea

No he vuelto, solo estoy de paso.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH][solucionado] guardar ip externa en una variable
Scripting
queteimporta 0 5,610 Último mensaje 21 Marzo 2008, 14:26 pm
por queteimporta
[BATCH] Asignar a una variable el resultado de un comando (Solucionado)
Scripting
TaRGaZo 2 18,835 Último mensaje 30 Junio 2009, 10:59 am
por TaRGaZo
Problema con variable del FOR (Batch) SOLUCIONADO
Scripting
<ИΘZIЭ(ŦB> 8 6,308 Último mensaje 20 Septiembre 2009, 14:15 pm
por Guerrerohgp
Insertar caracteres en una variable [Batch] (SOLUCIONADO) « 1 2 »
Scripting
DA KILLER 12 9,823 Último mensaje 3 Julio 2010, 23:38 pm
por DA KILLER
[Batch] Como puedo validar la variable? [Solucionado] « 1 2 »
Scripting
Batitoul 13 13,073 Último mensaje 12 Septiembre 2011, 00:20 am
por leogtz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines