Ms-Dos - Problema bat anterior

 
Vista:

Problema bat anterior

Publicado por paul (7 intervenciones) el 10/04/2014 10:38:09
muy buenas, hace un tiempo pedi ayuda para un script que lo pondré a continuación:
lo que hace es lo siguiente:
1. Crea una carpeta y copia dentro todos los archivos txt
2. Busca en cada txt una palabra
3. Crea otra carpeta dentro de la anterior con los txt que contienen la palabra

Problema: hay algunos archivos que los pasa por alto y que contienen la palabra, donde esta el fallo?
-------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
cd c:\nuevo
mkdir "%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%"
cd "%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%"
cd c:\nuevo
copy c:\nuevo\*.txt c:\nuevo\"%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%\"
del *.txt
cd c:\nuevo\"%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%"
mkdir perdidas
cd c:\nuevo\"%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%"
FINDSTR /i /m espera *.txt >temporal.tmp
FOR /F %%a in ( temporal.tmp ) do copy %%a c:\nuevo\"%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%\"perdidas\
del *.tmp
pause

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Problema bat anterior

Publicado por Antoni Masana (811 intervenciones) el 10/04/2014 13:28:27
Prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
 
set Direc=%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%
 
md   c:\nuevo\%Direc%
md   c:\nuevo\%Direc%\perdidas
copy c:\nuevo\*.txt c:\nuevo\%Direc%
del  c:\nuevo\*.txt
cd   c:\nuevo\%Direc%
 
FINDSTR /i /m espera *.txt >temporal.tmp
 
FOR /F %%a in ( temporal.tmp ) do copy %%a c:\nuevo\%Direc%\perdidas\.
 
del *.tmp
pause

Como utilizas la hora para crear un directorio, si la ejecución es dentro del mismo minuto todo funciona bien, pero si durante la ejecución cambia el minuto la cosa no Funciona, por lo que lo mejor es poner el nombre del Directorio en una Variable y usar esta.

Esto tampoco es valido


1
2
3
set Direc_1=C:\Nuevo
set Direc_2=C:\Nuevo\%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%
set Direc_3=C:\Nuevo\%date:~0,2%%date:~3,2%%date:~6,4%_%time:~0,2%%time:~3,2%\perdidas

Por que si al asignar Direc_2 son las 12:59:59.999 y al asignar Direc_3 son las 13:00:00 la cosa no funciona.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema bat anterior

Publicado por paul (7 intervenciones) el 11/04/2014 11:39:56
Muchas gracias por tu colaboración,

Tienes razón, pero lo tengo programado por tareas, dejando un tiempo suficiente para que se complete script.
Pero sigo con el mismo problema, algunos archivos que contienen la palabra se pasan por alto (no se si es por la cantidad de .txt que hay).
No veo el error y solo pasa algunas veces.

Gracias por vuestra ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Problema bat anterior

Publicado por Antoni Masana (811 intervenciones) el 11/04/2014 13:30:50
Quita al script el @echo off y ejecutalo asi:

1
C:\> El_Bat  >C:\STD_OUT.tmp 2>C:\STR_ERR.tmp

Esto crea dos ficheros. Uno con las líneas que va ejecutando y el segundo con los mensajes de error.

Podrás ver que hace y muy seguramente donde esta el error.

Más aun pon en la primera y ultima línea del BAT esto

1
ECHO %TIME%


y veras si tarda primero mas de 59 segundos y segundo si cambia de minuto durante la copia.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema bat anterior

Publicado por paul (7 intervenciones) el 15/04/2014 12:52:31
He encontrado el problema:
he visto que el error se da en la COPY
Yo genero archivos .txt a cada hora imprimiendo la fecha y hora como nombre
ejemplo:
ejemplo_214042014_2100

El problema esta cuando el .txt tiene un nombre con una hora de 3 dígitos
ejemplo:
ejemplo_ejemplo214042014_ 100 --> 1am
-El .txt se crea con un espacio, lo que impide que el COPY al leer el temporal no encuentra coincidencias.

Me gustaría saber como hacer que el time no cree espacios.

Gracias por vuestra atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema bat anterior

Publicado por xve (12 intervenciones) el 15/04/2014 16:16:26
Gracias por compartirlo Paul!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar