| 
	
		|  Autor | Tema: (SOLUCIONADO) [ BATCH ] Ayuda con "findstr"... y contador  (Leído 15,708 veces) |  
	| 
			| 
					
						| SuperDraco 
								       
								
								 Desconectado 
								Mensajes: 2.505
								
								 
								Crew Dragon
								
								
								
								
								
								   | 
 
Hola, hago este tema aparte porque lo veo distinto, espero que sea lo correcto... Bueno, el problema es que, a ver... si yo ejecuto este comando: se me muestra esta información:  Yo quiero buscar distintas "frases" ahi dentro como "320.0 kbit " "192.0 kbit " o "224.0 kbit ", con findstr , así que para buscar320.0 kbit  hago esto: mplayer "%%a" -frames 0 | findstr /c:"320.0 kbit" Pero claro, para buscar todas las frases al mismo tiempo no se hacerlo, porque no las puedo separar con comillas en findstr ... EDITO| ___________________________________________________________________________________________________________ | 
 : Ya he aprendido a separar las busquedas, lo estaba haciendo muy mal, tenía que usar comodines y espacios, pero ahora el problema cambia, necesito hacerlo de un modo distinto, tengo que crear un contador dentro de este comando: for /f "tokens=*" %%a in ('dir /B *.mp3') do set nombre="%%a" & mediainfo "%%a" | findstr Bit.rate.........................:.320.Kbps >null & call :errorEl contador debe sumar el valor de findstr (el numero) desde 161 hasta 320, y comrobarlos todos Ejemplo:  | findstr 161.kbps >null & call :error| findstr 162.kbps >null & call :error
 | findstr 163.kbps >null & call :error
 | findstr ...
 | findstr 320.kbps >null & call :error
como leches se hace eso? xDDD
 
 |  
						| 
								|  |  
								| « Última modificación: 19 Marzo 2011, 13:23 pm por pitoloko » |  En línea | 
 
 No he vuelto, solo estoy de paso. |  |  |  | 
			| 
					
						| leogtz 
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								      Desconectado 
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								     | 
 
No te he entendido, por favor, pon un ejemplo.
 No puedes buscar "varias" palabras, debes buscar una por una, fijate en la ayuda del findstr, habla solo de una cadena.
 
 
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| SuperDraco 
								       
								
								 Desconectado 
								Mensajes: 2.505
								
								 
								Crew Dragon
								
								
								
								
								
								   | 
 
Vale, a ver si esta vez se me entiende xD alargaré un poco la explicación: Con el comando "mediainfo "%%a" " recibo esta información:  En esa información, el valor del bit rate (el numero) puede cambiar, ahí en la imagen el número es 320 ,vale, yo lo que necesito es que findstr  busque todos los posibles numeros desde el 161 hasta el 320, osea: 161 162 163 ... 319 320 Y si encuentra alguno de esos numeros, entonces asignarle una función a realizar. Esto es posible hacerlo de un modo muy "patata" por ejemplo así mediainfo "%%a" | findstr 161.kbps 162.kbps 163.kbps (Y así hasta completar los números hasta el 320) Pero es una taréa muy tediosa, luego necesitaré aumentar el número final hasta el 1124 en otro comando diferente, no puedo escribir mil veces a mano el número... y sé que esta faena se podría hacer insertando un contador de numeros que vaya probando findstr  desde el 161 hasta el 320 en o hasta el que yo le diga. El contador habría que insertarlo dentro del FOR , supongo.Leo , me he leido bien como usar el findstr , no quiero reectificarte, sé que sabes muchisimo pero me parece que estás equivocado en lo que has dicho porque yo si que puedo buscar varías palabras a la vez...  Usando findstr  el punto .  se usa como comodín para cualquier caracter, y el espacio para separar palabras/frases que se quieran buscar, esto me permite una busqueda de multiples frases a la vez (al menos a mi si :S) Espero que ya hayas podido entender mi problema bien está vez, gracias por todo! |  
						| 
								|  |  
								|  |  En línea | 
 
 No he vuelto, solo estoy de paso. |  |  |  | 
			| 
					
						| leogtz 
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								      Desconectado 
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								     | 
 
Tú lo que estás buscando es una expresión regular. Investiga sobre eso. Mira, yo no tengo el comando mediainfo así que si pudieras decirme de donde lo descargo o como lo instalo. Pero bueno, lo analizaremos con un archivo de texto (er.txt): C:\>type er.txtAudio                           : algoooo
 Format                          : OK
 Format version                  : OK 2
 Bit rate                        : 320 Kbps
 lkjasd
 asd
 asd
 f
 gdfgdfg
 345edfgf
 dfg
 C:\>
 Yo quiero buscar la cadeba Bit rate, y obtener los números, bueno: type er.txt | findstr /r "^Bit rate"Si quieres los trozos o tokens usas FOR /F. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| SuperDraco 
								       
								
								 Desconectado 
								Mensajes: 2.505
								
								 
								Crew Dragon
								
								
								
								
								
								   | 
 
Ok,ya imaginaba yo que el que estaba equivocado no eras tu xD Perdon, Bueno el mediainfo  es un programa, se descarga aqui:http://mediainfo.sourceforge.net/es/Download/Windows (La versión CLI  para usarla por CMD ) Ahora, con lo que me has dicho, supongo que lo que debo hacer es cortar el "trozo" para mostrar lo que me interesa, a ver, intento esto: for /f "tokens=*" %%a in ( 'dir  /B *.mp3') do  mediainfo "%%a " |  findstr /r "^B it rate" > prueba.txt
 Pero el mediainfo me proporciona varías lineas que contienen "Bit rate", asi que en el texto queda esto:Overall bit rate                 : 320 Kbps Bit rate mode                    : Constant
 Bit rate                         : 320 Kbps
 Sampling rate                    : 44.1 KHz
 :/  |  
						| 
								|  |  
								|  |  En línea | 
 
 No he vuelto, solo estoy de paso. |  |  |  | 
			| 
					
						| leogtz 
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								      Desconectado 
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								     | 
 
Mmmm, ya decía yo que el findstr era una ***** para las expresiones regulares. Prueba con: ... | findstr "^Bit rate"... | findstr /b "Bit rate"
 ... | findstr /r "Bit rate"
 ... | findstr /r "^\<Bit rate"
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| SuperDraco 
								       
								
								 Desconectado 
								Mensajes: 2.505
								
								 
								Crew Dragon
								
								
								
								
								
								   | 
 
Porfavor, mirate este código cuando tengas un rato, está mal echo pero se entiende mi mala idea de lo que quiero hacer y quizás sea más fácil asi, pero no se como hacerlo bien para repetir "findstr" con cada numero de "%rate%: @echo off
 Set rate=161
 
 for /f "tokens=*" %%a in ('dir /B *.mp3') do mediainfo "%%a" | findstr Bit.rate.........................:.%rate%.Kbps & call :convertir
 
 :Find Rate
 set /a rate+=1
 if %rate%=320 pause
 goto :eof
 
 :Convertir
 IF %ERRORLEVEL% LEQ 0 echo+ %nombre% >> %lista% & coreconverter.exe -infile=%nombre% -outfile=%nombre% -convert_to="mp3 (Lame)" -b 160 --cbr -q 0 -noidtag
 |  
						| 
								|  |  
								| « Última modificación: 16 Marzo 2011, 23:47 pm por pitoloko » |  En línea | 
 
 No he vuelto, solo estoy de paso. |  |  |  | 
			| 
					
						| SuperDraco 
								       
								
								 Desconectado 
								Mensajes: 2.505
								
								 
								Crew Dragon
								
								
								
								
								
								   | 
 
Al menos ya he resuelto una parte del problema: mediainfo "%%a" "--Inform=General;%BitRate%"Ese comando me devuelve un número, NADA MÁS... asi puedo usar findstr  más comodamente (Aunque yo sigo igual XD) _________________________________________________________________________EDITO: Bueno, el código ya va creciendo mucho y me surge una duda importante para que funcione bien... Fijarse en la cádena "CALL", para acabar su función sin que luego haga el "pause " ¿lo he puesto correctamente? me refiero al "& goto :eof ", es que en algunos códigos he visto que se hace así:|| (Goto :eof) y no puedo comprobarlo del todo bien yo mismo :/... Call :M4A
 :M4A
 IF %ERRORLEVEL% LEQ 0 coreconverter.exe -infile="%nombre:~0,-5%.m4a" -outfile="%nombre:~0,-5%.mp3" -convert_to="mp3 (Lame)" -b 160 --cbr -q 0 -noidtag & del /q "%nombre%" & goto :eof
 
 pause
 |  
						| 
								|  |  
								| « Última modificación: 17 Marzo 2011, 09:19 am por pitoloko » |  En línea | 
 
 No he vuelto, solo estoy de paso. |  |  |  | 
			| 
					
						| SuperDraco 
								       
								
								 Desconectado 
								Mensajes: 2.505
								
								 
								Crew Dragon
								
								
								
								
								
								   | 
 
Al final me he decantado por usar findstr  de esta manera: Mediainfo "1.mp3" "--Inform=General;%BitRate%" | findstr "161... 162... 163... 164... 165... 166... 167... 168... 169... 17.... 18.... 19.... 2..... 3....." >nulRecordemos que mi proposito es buscar los bitrates mayores de 160000 ... Si tengo un mp3 de un bitrate de 320  kbps, el comando del mediainfo me devuelve este numero:320000 Entonces de la forma que uso findstr:findstr "3....." Estaría buscando (En mi caso) cualquier número superior al 300000 Osea, Busca que el primer digito sea el 3 , y el resto puede ser cualquiera. ¿Me equivoco? Parece que no me da fallos, lo he probado con todos los bitrates de mis MP3 en distintas maneras y el comando parece que no se equivoca, pero necesito estar seguro antes de probarlo a la ligera y que me destruya mi coleccion de mp3 xD...Leo  espero tu respuesta para que me digas si estoy usando findstr  bien aunque no sea la forma más correcta de usarlo, muchas gracias, o quien pueda sacarme de dudas PD: Aun estoy con la duda del "goto :eof" xD Y otra cosa, cuando termine mi batch, me gustaría postearlo, puedo hacerlo en esta sección, la de scripting? Saludos! |  
						| 
								|  |  
								| « Última modificación: 18 Marzo 2011, 05:50 am por pitoloko » |  En línea | 
 
 No he vuelto, solo estoy de paso. |  |  |  | 
			| 
					
						| leogtz 
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								      Desconectado 
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								     | 
 
Okay, son las 1:17 am, mañana checo tu duda. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | [Ayuda] modificar "start page" en "internet explorer" con "batch" Scripting
 | taton | 7 | 18,900 |  20 Septiembre 2006, 01:45 am por taton
 |  
						|   |   | Batch que busque y elimine ".log" anteriores a una fecha? (SOLUCIONADO) Scripting
 | SuperDraco | 3 | 7,387 |  12 Noviembre 2009, 02:29 am por flony
 |  
						|   |   | [BATCH] Como desinstalo un evento del sistema con "wevtutil.exe"? (SOLUCIONADO) Scripting
 | SuperDraco | 9 | 10,225 |  30 Noviembre 2009, 16:30 pm por SuperDraco
 |  
						|   |   | [BATCH] Ayuda con este script sobre "if exist" y "takeown" (SOLUCIONADO) Scripting
 | SuperDraco | 4 | 13,677 |  30 Noviembre 2009, 21:05 pm por Angel Doze
 |  
						|   |   | (Solucionado)[BATCH] Como delimitar con un "FOR" las extensiones de los nombres Scripting
 | SuperDraco | 2 | 3,897 |  23 Enero 2011, 04:26 am por SuperDraco
 |    |