Ayuda con BAT leer Archivo

Iniciado por elecktra, 24 Septiembre 2009, 16:08 PM

0 Miembros y 2 Visitantes están viendo este tema.

leogtz

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:

for %%a in (C:\ICR\DATA\*.txt) do (
for /f "tokens=4 delims=_" %%_ in (%%a) do (
echo %%~n_
)
)


Eso probablemente te mostrará lo que quieres, luego puedes manejar la variable "%%~n_" como desees.
Código (perl) [Seleccionar]

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

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

elecktra

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.

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)
)
)
goto :eof

:comando
set n0=%~1
set n1=%~nx2
set n2=%~3
set n3=%~n1


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.

leogtz

#12
A ver, tu lo que quires es esto:


Citarexporto 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:

@echo off
cd /d "%homedrive%\icr\data"
:: No hace falta indicar la ruta de los archivos de texto en el for, ya que
:: estamos en ese mismo directorio.
:: Procesamos todos los archivos .txt del directorio local.
:: Segun lo que tu has descrito, tu quieres todo lo que esta despues del segundo '_', pero
:: sin la extension:
for %%_ in (*.txt) do (
for /f "tokens=4 delims=_" %%a in (%%_) do (
echo %%~na, en el archivo : %%a
)
)
pause>nul

La salida generada:


C:\>code.bat
080630, en el archivo : 080630.TXT
080630HL, en el archivo : 080630HL.TXT
080630POTE, en el archivo : 080630POTE.TXT
080630, en el archivo : 080630.TXT
080630HL, en el archivo : 080630HL.TXT
080630POTE, en el archivo : 080630POTE.TXT
080630, en el archivo : 080630.TXT
080630HL, en el archivo : 080630HL.TXT
080630POTE, en el archivo : 080630POTE.TXT
080630, en el archivo : 080630.TXT
080630HL, en el archivo : 080630HL.TXT
080630POTE, en el archivo : 080630POTE.TXT

C:\icr\data>


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é.
Código (perl) [Seleccionar]

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

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

elecktra

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.

leogtz

Código (perl) [Seleccionar]

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

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

elecktra

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.

elecktra

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.


CaronteGold

   Siento interrumpir... elektra, ¿Cuál es ese programa?

leogtz

Cita de: 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.



Pon el código.
Código (perl) [Seleccionar]

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

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

xassiz_

Cita de: CaronteGold en  3 Octubre 2009, 00:06 AM
   Siento interrumpir... elektra, ¿Cuál es ese programa?
Notepad 2



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE