Título: Ayuda con BAT leer Archivo Publicado por: elecktra en 24 Septiembre 2009, 16:08 pm Hola, comoe stan, les cuento mi problema, tengo desarrollado un codigo que me lee nombre de archivos TXT y envia un mail, el nobre del archivo suele tener el siguiente formato 2_00411_080601_080630.TXT yo solo necesito loq ue se encuentra del segundo "_" para atras, entonces lo leia con una variable %n3:~-13%, con ese codigo solo leia los 13 caracteres finales sin al extensión.
el problema es que ahora tengo una modificacion, algunco TXT se le pueden agregar de 1 a 4 letras al final. Pero si pongo %n3:~-17% y el archivo tinen 15 acaracteres me toma otros valores. resumiendo como logro leer desde el segundo "_" para atras sin importar la cantidad. Espero me puedan ayudar, gracias. Título: Re: Ayuda con BAT leer Archico Publicado por: leogtz en 24 Septiembre 2009, 16:47 pm Pon un poco del contenido del archivo y lo que has intentado.
Título: Re: Ayuda con BAT leer Archico Publicado por: elecktra en 24 Septiembre 2009, 17:46 pm Pero amigo ya fui calro, tengo archivos de texto con el siguiente formato:
2_00411_080601_080630.TXT Yo necesito leer el nombre de archivo sin extensión apartir del segundo "_" osea en este caso necesitaria 080601_080630 pero el problema es que aveces el archivo puede ser mas largo ejemplo. 2_00411_080601_080630HL.TXT ó 2_00411_080601_080630POTE.TXT Título: Re: Ayuda con BAT leer Archico Publicado por: leogtz en 24 Septiembre 2009, 18:31 pm Código: C:\>type file.txt Código Código: C:\>type "file.txt" | for /f "tokens=4 delims=_" %a in (file.txt) do @echo %a Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 24 Septiembre 2009, 20:39 pm No logro hacerlo funcionar, mira te muestro el pedazop de codigo que tengo yo.
Código: for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( Ese codigo me busca lso archivos de texto en el directorio, me gustaria reemplazar el set n3=%~n1 por lo que te pido arriba. gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 24 Septiembre 2009, 21:55 pm A ver, es que no te has explicado bien, ¿un sólo archivo de texto contiene todos los nombres de archivo? o diferentes archivos?
En caso de que sean diferentes archivos, ejemplo, tengo los siguientes archivos que contienen nombres de archivos: Código: C:\>type *.txt Con un código así podrías conseguirlo: Código: @echo off Salida: Código: C:\>code.bat Es decir, se procesan todos los archivos de texto del directorio actual y se extrae lo que quieres. Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 24 Septiembre 2009, 22:16 pm Es verdad disculpame, se me olvido aclarar ese detalle, el BAt revisa en un directorio todos lso txt, pero solo el nombre de archivo, o el contenido y nesecito extraer lo que se encuentra detras del segundo "_"
ejemplo: 2_00411_080601_080630POTE.TXT Con el codgido que me dejaste arriba puedo hacerlo, porque po lo qeu veo, lee una parte sola del nombre. Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 28 Septiembre 2009, 14:32 pm Bue amigo aqui te dejo el codigo que armado anteriormente con un poco de la ayuda de ustedes. miralo y te exoplico cual es la modificacionq ue quiero realizar ahora.
Código: @echo off Como pueden ver esta sección: Código: echo EMPRESA: %n1% SUCURSAL: %n2% PERIODO: %n3:~-13% >>%SYSTEMDRIVE%\ICR\DATA\Procesados\Registros\%date:~0,2%-%date:~3,2%-%date:~6,4%-%time:~0,2%.%time:~3,2%.txt exporto un archivo de txt de registro, dentro del mismo me guarda partes de los archivos encontrados en el directorio, pero necesito que el PERIODO: ya no sea %n3:~-13%, osea que no me guarde los ultimo 13 caracteres si no todo los que hay desde el segundo "_" hasta la extensión (sin incluir esta). ejemplo: 2_00411_080601_080630POTE.TXT 1_00411_080601_080630EE.TXT La verdad no logro hacerlo. Espero me puedan ayudar. Gracias. Nota del mod:he corregido las etiquetas Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 28 Septiembre 2009, 20:47 pm Pero es que ya te he explicado y dejado el codigo que hace exactamente lo que quieres.
No tienes por que usar extraccion de caracteres, con saber usar un poco de for y los tokens, con eso puedes. Código: http://foro.portalhacker.net/index.php/topic,86033.0.html Código: http://foro.elhacker.net/scripting/acciones_sobre_archivos_de_texto_batch-t242748.0.html Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 28 Septiembre 2009, 21:31 pm Si amigo, te lo agradezco, pero nos e como modificar mi codigo con el tuyo, eso es lo que nos e hacer, gracias.
Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 29 Septiembre 2009, 02:07 am Sólo modifica esto:
for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( for /f "tokens=1,2 delims=_" %%b in ("%%a") do ( for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d) ) ) Por esto: Código: for %%a in (C:\ICR\DATA\*.txt) do ( Eso probablemente te mostrará lo que quieres, luego puedes manejar la variable "%%~n_" como desees. Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 29 Septiembre 2009, 15:24 pm Hola, comoe stas? amigo, la verdad no logro hacer que fucniones, si uso el codigop que me pasaste, ya me deja de fucnioanr el BAT y no trabajr como deberia, te explico que necesito, apra ver si me peude hechar ua mano.
Código: for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( Con ese codigo, yo kleo cada nombre de txt del directorio, ejemplo: 1_00026_081122_081130.txt luego con la variable set n1=%~nx2 extraigo 1 (1_00026_081122_081130.txt) Con la variable set n2=%~3 extraigo el 26 (1_00026_081122_081130.txt) Con al variable set n3=%~n1 extraigo el 1_00026_081122_081130.txt esta ultima variable es la que neceito modificar, apra que ya no me cuente los 13 caracteres si no que me cuento doto lo que alla desde el "_" hasta el .txt (sin incluir este) y sin importar la catidad y tipo de caracteres, me entiendes? Ejemplo: 00026_081122_081130.txt ó 00026_081122_081130PRUEBA.txt El tema es que yo no se utilizar los tokens, anteriormente me ayudaron ustedes con este problema. Y trate de probar el codigo con mis conocimientos, peor no logro ahcerlo fucnioanr. Gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 30 Septiembre 2009, 04:47 am A ver, tu lo que quires es esto:
Citar exporto un archivo de txt de registro, dentro del mismo me guarda partes de los archivos encontrados en el directorio, pero necesito que el PERIODO: ya no sea %n3:~-13%, osea que no me guarde los ultimo 13 caracteres si no todo los que hay desde el segundo "_" hasta la extensión (sin incluir esta). ejemplo: 2_00411_080601_080630POTE.TXT 1_00411_080601_080630EE.TXT A partir del segundo _ pero sin la extensión: Código: @echo off Código: C:\>code.bat No entiendo cual es el problema, los codigos que te he dado hacen exactamente lo que pides. Por mi parte es todo, ya no te ayudaré. Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 30 Septiembre 2009, 15:20 pm Amigo, ya encontre porque me falla, en realidad tu estas ahciendo el codgi a partir del tercer "_" no del segun como como te decia, essimplemente eso, como modifico tu codigo?
Gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 1 Octubre 2009, 04:06 am Modifica el tokens a 3.
Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 2 Octubre 2009, 17:13 pm Hola, perdona por insisteir, pero hay algo que no emesta funcionando.. porque al adaptarlo a mi y exportarlo a un txt, me sale esto:
%%~na, en el archivo : %%a %%~na, en el archivo : %%a %%~na, en el archivo : %%a %%~na, en el archivo : %%a cuando deberia aparecer otro dato. Por otro aldo tu estas leyendo el contenido del txt o el nombre, porque no necesito leer el nombre. Gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 2 Octubre 2009, 22:11 pm Mira, pues hice lo que me has dicho, cambie el tokens a 3 pero solo me muestra lo que se encuentra detras del tercer "_"
Estuve probando con otros valores y con un %%_*_ pero tampoco funciono. me das una manito. Gracias. (http://i36.tinypic.com/35bvzaa.png) Título: Re: Ayuda con BAT leer Archivo Publicado por: CaronteGold en 3 Octubre 2009, 00:06 am Siento interrumpir... elektra, ¿Cuál es ese programa?
Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 3 Octubre 2009, 05:38 am Mira, pues hice lo que me has dicho, cambie el tokens a 3 pero solo me muestra lo que se encuentra detras del tercer "_" Estuve probando con otros valores y con un %%_*_ pero tampoco funciono. me das una manito. Gracias. (http://i36.tinypic.com/35bvzaa.png) Pon el código. Título: Re: Ayuda con BAT leer Archivo Publicado por: xassiz_ en 3 Octubre 2009, 13:45 pm Siento interrumpir... elektra, ¿Cuál es ese programa? Notepad 2Título: Re: Ayuda con BAT leer Archivo Publicado por: Aranguez en 4 Octubre 2009, 02:56 am Hola buenas noches, les dejo este codigo que a mi me funciona para lo que buscan:
Código: echo off Saludos Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 5 Octubre 2009, 15:19 pm Hola, como estan el programa a utilizar es el Notepad++, es free y muy comodo para trabajar.
Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 5 Octubre 2009, 17:57 pm Amigos, gracias a ustedes, estoy mas serca de terminar este codigo.
Hice esto: Código: for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( Ahora si lo gro exportar el txt con los datos necesarios, pero me urgio otro problema. El txt exportado, es como se saltea una linera, observer, me loe xporta asi: Citar EMPRESA: 1 SUCURSAL: 5 PERIODO: EMPRESA: 1 SUCURSAL: 26 PERIODO: 080801_080831 EMPRESA: 1 SUCURSAL: 40 PERIODO: 081122_081130 EMPRESA: 1 SUCURSAL: 72 PERIODO: 080701_080731 EMPRESA: 1 SUCURSAL: 72 PERIODO: 081215_081215PRUEBA EMPRESA: 2 SUCURSAL: 11 PERIODO: 081215_081217PPO EMPRESA: 2 SUCURSAL: 411 PERIODO: 080601_080630 EMPRESA: 3 SUCURSAL: 11 PERIODO: 080601_080630 me entiende? es como que no concide. Gracias. Me entiendes, simrpe la primer linea del txt aparece en blanco Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 5 Octubre 2009, 19:25 pm Pero creo que tengo problemas con la variable n3, si la seteo por debajo de :comando no me da resultados.
Ahora hice bien, porque yo simplemente pegue una linea del codigo que me dejaron arriba en mi codigo, pero veo que hay dos lienas con la misa variable. for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d) echo %%d Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 6 Octubre 2009, 15:35 pm Amigos, me pueden ayudar cone ste problemita?
gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: leogtz en 6 Octubre 2009, 16:56 pm Sí se te puede ayudar, pero cuando se tenga tiempo y disposición, no hagas doble post, por favor.
Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 7 Octubre 2009, 17:00 pm Hola, otra de las cosas que em dic eunta es que no puedo setear una variable despeus de cerrar con )
Código: for %%a in (c:\icr\data\*.txt) do ( La variable n3, si la seteo junto a las otras no funciona. Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 7 Octubre 2009, 17:21 pm Creo saber cual es el problema, peor nos e como solucioanrlo, le sexplico loq eu pienso.. mi codigo original era este:
Código: for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( Luego el usuarios Aranguez me dejoe ste: Código: echo off y el de el si em funcionaba, pero el problema es que debia adaptarlo a mi codigo, entonces simplemente a mi codigo le agruegue una linea. for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( for /f "tokens=1,2 delims=_" %%b in ("%%a") do ( for /f "tokens=1,2* delims=_" %%b in ("%%~na") do ( for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d) ) ) goto :eof :comando set n0=%~1 set n1=%~nx2 set n2=%~3 set n3=%~n1 Pero cuadno exporto todo a un TXT, no coinciden lso renglones, y tampoco me deja hacer un echoo %%d despues de cerrar los parentecis. Creoq eu el problema esta en yo al copiar la linea del codigo que em dejaron al mio, se repiten als variables %%d. Pero como ahgo apra reemplazar por otra letra yq eu fucnione? No se como hacerlo. Gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: Aranguez en 8 Octubre 2009, 02:16 am Ok, sustituye la linea tuya:
for /f "tokens=1,2 delims=_" %%b in ("%%a") do ( por esta otra que te di en mi codigo: for /f "tokens=1,2* delims=_" %%b in ("%%~na") do ( Saludos Título: Re: Ayuda con BAT leer Archivo Publicado por: elecktra en 8 Octubre 2009, 16:50 pm Hola aranguez, ese metodo ya lo ahbai probado, peor el problema es qeu no puedo setear la variable por debajo del :comando, porque me arroja como resultado:
Citar EMPRESA: 1 SUCURSAL: 5 PERIODO: %d EMPRESA: 1 SUCURSAL: 26 PERIODO: %d EMPRESA: 1 SUCURSAL: 40 PERIODO: %d EMPRESA: 1 SUCURSAL: 72 PERIODO: %d EMPRESA: 1 SUCURSAL: 72 PERIODO: %d EMPRESA: 2 SUCURSAL: 114 PERIODO: %d EMPRESA: 2 SUCURSAL: 11 PERIODO: %d EMPRESA: 2 SUCURSAL: 411 PERIODO: %d EMPRESA: 3 SUCURSAL: 11 PERIODO: %d Cuando deberia ser: EMPRESA: 1 SUCURSAL: 5 PERIODO: 080801_080831 (y asi por cada linea.) Es raro proque si seteo una variable antes de cerrar lo ")" me lo muestra pero desfazado: osea: Citar EMPRESA: 1 SUCURSAL: 5 PERIODO: EMPRESA: 1 SUCURSAL: 26 PERIODO: 080801_080831 EMPRESA: 1 SUCURSAL: 40 PERIODO: 081122_081130 EMPRESA: 1 SUCURSAL: 72 PERIODO: 080701_080731 EMPRESA: 1 SUCURSAL: 72 PERIODO: 081215_081215PRUEBA EMPRESA: 2 SUCURSAL: 114 PERIODO: 081215_081217PPO EMPRESA: 2 SUCURSAL: 11 PERIODO: 080601_080630 EMPRESA: 2 SUCURSAL: 411 PERIODO: 080601_080630 EMPRESA: 3 SUCURSAL: 11 PERIODO: 080601_080630 Me sta volviendo loco, este code, no lofro identificar el error. Gracias. Título: Re: Ayuda con BAT leer Archivo Publicado por: Aranguez en 9 Octubre 2009, 05:27 am Hola, prueba con este codigo, pon ojo al directorio y a las letras de las variables que cambiaron.
echo off for %%a in (C:\zzz\*.txt) do ( for /f "tokens=1,2* delims=_" %%b in ("%%~na") do ( for /f "tokens=* delims=0" %%e in ("%%c") do (call :comando %%a %%b %%e %%d) ) ) goto :eof :comando set n0=%~1 set n1=%~nx2 set n2=%~3 set n3=%4 echo %n0% echo %n1% echo %n2% echo %n3% los echo se los puse para chequear, espero que te sirva |