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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Programacion BAT! AYUda Por favor!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Programacion BAT! AYUda Por favor!  (Leído 6,798 veces)
elecktra

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Programacion BAT! AYUda Por favor!
« en: 29 Julio 2008, 02:13 am »

editado


« Última modificación: 8 Agosto 2008, 06:36 am por norkru » En línea

Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #1 en: 29 Julio 2008, 02:18 am »

si de poderse se puede
pero no entendi como son los archivos, xD
pero si se puede
seguro que alguien te ayuda o si podrias ser mas claro te ayudaria
es q no entendi xD
saludos


En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #2 en: 29 Julio 2008, 03:58 am »

Yo te ayudo, pero necesito entender bien el patrón.

¿Me darías un ejemplo de archivo de texto?

2_00018

¿Todos los archivos de texto tienen 7 carácteres de longitud?
¿Tienen solo numeros y un _?

¿Necesitas siempre el número antes del _?
¿Necesitas siempre el número después del _ sin contar los ceros?

Si me explicas bien que valores según un patrón tendrán siempre esos archivos de texto, te ayudo.
En línea

elecktra

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #3 en: 30 Julio 2008, 03:26 am »

editado
« Última modificación: 8 Agosto 2008, 06:36 am por norkru » En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #4 en: 30 Julio 2008, 04:32 am »

Código
  1. @echo off
  2.  
  3. for %%a in (C:\ICR\DATA\?_*_*_*.txt) do (
  4. for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
  5. for /f "tokens=1 delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d)
  6. )
  7. )
  8. goto :eof
  9.  
  10. :comando
  11. set n0=%~1
  12. set n1=%~nx2
  13. set n2=%~3
  14. C:\ICR\encolador.exe N %n0% Tabla:Entrada %n1% %n2% N US PW SERVIDOR B. DE DATOS
  15.  
  16.  
« Última modificación: 30 Julio 2008, 06:11 am por carlitos.dll » En línea

elecktra

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #5 en: 30 Julio 2008, 05:05 am »

editado!
« Última modificación: 8 Agosto 2008, 06:36 am por norkru » En línea

elecktra

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #6 en: 30 Julio 2008, 05:13 am »

editado
« Última modificación: 8 Agosto 2008, 06:36 am por norkru » En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #7 en: 30 Julio 2008, 20:36 pm »

Actualizo el code, tenía un problema en esta línea:
Código:
for /f "tokens=1 delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d)

Si tenía un archivo llamado:
2_001018_080601_080630.txt
en vez de generar el 1018 generaba 1.

Esta es la solución:

Código:
for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d)
« Última modificación: 30 Julio 2008, 21:09 pm por carlitos.dll » En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #8 en: 30 Julio 2008, 20:53 pm »

Te explico como funciona:

Los archivos de texto deben estar en C:\ICR\DATA\
con el for %%a busco en dicha carpeta los archivos de texto que tengan:
C:\ICR\DATA\?_*_*_*.txt
es decir:
que tengan un caracter, un _ , luego varios caracteres, un _ , luego varios caracteres, un _ , luego varios caracteres, con extensión .txt

Luego en for /f %%b (con el for /f leo el contenido de un archivo o una cadena de texto, por eso dentro de for /f %%b coloco ("%%a") entre comillas, es decir con %%b leo el nombre del archivo que me proporciona %%a, y obtengo los dos primeros tokens delimitados por el caracter _  , el primer token será %%a e implicitamente el segundo token será %%c, luego llamo a for /f %%d con el contenido de "%%c" es decir el segundo token: y con "tokens=* delims=0" le borro los caracteres 0 del principio, luego llamo a la etiqueta comando, con el contenido de %%a (el nombre del archivo .txt) %%b con el primer token del nombre antes del _  y %%d que es el segundo token antes del _ con los ceros del principio borrados.

La etiqueta comando recibe en la variable n0 el primer parametro (%%a) y si viene con comillas se las borra (~) en variable n1 recibo el primer token antes del _ (%%b) pero este viene con el nombre, es decir: ejemplo: C:\ICR\DATA\2 y con %~nx2 obtengo solo el nombre y la extensión (puedes borrar la x porque aqui no recibimos extensión) y en variable n2 recibimos el segundo token después del _ con los ceros del principio borrados.

Entonces hacemos el comando:
C:\ICR\encolador.exe N %n0% Tabla:Entrada %n1% %n2% N US PW SERVIDOR B. DE DATOS

que si quieres ver la salida, le pones:
echo C:\ICR\encolador.exe N %n0% Tabla:Entrada %n1% %n2% N US PW SERVIDOR B. DE DATOS>>salida.txt

y verás los comandos que genera.

Puedes comentar el @echo off
::@echo off
o
rem @echo off

y al final del archivo añades un pause, y verás como trabaja.

Te dejo el script más sencillo:

Código
  1. @echo off
  2.  
  3. for %%a in (C:\ICR\DATA\?_*_*_*.txt) do (
  4. for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
  5. for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d)
  6. )
  7. )
  8. goto :eof
  9.  
  10. :comando
  11. set n0=%1
  12. set n1=%n2
  13. set n2=%3
  14. C:\ICR\encolador.exe N %n0% Tabla:Entrada %n1% %n2% N US PW SERVIDOR B. DE DATOS
  15.  

« Última modificación: 30 Julio 2008, 21:09 pm por carlitos.dll » En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Programacion BAT! AYUda Por favor!
« Respuesta #9 en: 30 Julio 2008, 21:25 pm »

Más optimizado:

Código
  1.  
  2. @echo off
  3. pushd C:\ICR\DATA\
  4.  
  5. for %%a in (?_*_*_*.txt) do (
  6. for /f "tokens=1,2 delims=_" %%b in ("%%a") do (
  7. for /f "tokens=* delims=0" %%d in ("%%c") do (
  8. C:\ICR\encolador.exe N %%a Tabla:Entrada %%b %%d N US PW SERVIDOR B. DE DATOS
  9. )
  10. )
  11. )
  12.  
  13.  
  14.  
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Por favor necesito ayuda con un ejercicio de metodologia de programacion
Ejercicios
Madsmarco 1 4,006 Último mensaje 11 Abril 2011, 10:29 am
por .mokk.
AYUDA POR FAVOR!! :( NUEVO EN PROGRAMACION
Programación C/C++
RamonVelz 1 1,654 Último mensaje 13 Mayo 2014, 05:48 am
por engel lex
Programación C++ Ayuda Por Favor
Programación C/C++
ANONIMO26 3 2,971 Último mensaje 27 Abril 2020, 19:02 pm
por ANONIMO26
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines