Ms-Dos - Bat que al encontrar campo en interior de archivo lo mueva a otro directorio

   
Vista:

Bat que al encontrar campo en interior de archivo lo mueva a otro directorio

Publicado por Sergio (18 intervenciones) el 09/08/2012 00:27:56
Buenas Tardes.

He estado viendo el foro y el bat que muestran se asemeja a lo que necesito hacer, sin embargo como no conosco de codigos DOS no he logrado modificarlo.

http://www.lawebdelprogramador.com/foros/Ms-Dos/1309318-Bat_que_al_encontrar_campo_en_interior_de_archivo_lo_mueva_a_otro_directorio.html

Ejemplo:

Tengo en la ruta C:\Super varios archivos " *.hse " que en el interior de cada archivo solo debe de contener datos numericos; y tengo un archivo de texto que se llama " Cod_errados.txt " el cual contiene en una sola columna todas las vocales.

Lo que pretendo que haga este bat es que identifique que archivos *.hse contiene las vocales que se encuentran registradas en el archivo " Cod_errados.txt ", posteriormente deve enlistarme en una archivo de texto todos los nombres de los archivos *.hse que en su interior contengan los registros de " Cod_errados.txt "

Luego de ello eliminar los archivos *.hse que tenga enlistado en el nuevo archivo creado por la validacion.

Tener en cuenta que lo de las vocales en el archivo " Cod_errados.txt " es solo de ejemplo, ya que este archivo podria poner cualquier dao que yo quisiera que se conpare con todos los archivos *.hse que haya en la ruta C:\Super .

Por favor, espero puedan ayudarme.

Gracias
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

Bat que al encontrar campo en interior de archivo lo mueva a otro directorio

Publicado por Antoni Masana (269 intervenciones) el 09/08/2012 12:17:53
Esto más o menos es lo que pides


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
 
CD C:\Super
TYPE nul >Fil_Errados.txt
 
FOR /F %%a in (Cod_Errados.txt) do call :Busca
FOR /F %%a in (Fil_Errados.txt) do del  %%a
GOTO:EOF
 
:Busca
   FOR %%b in (*.hse) do (
       FIND /I "%%a" %%b >nul
       if not Errorlevel 1 ECHO %%b >>Fil_Errados.txt
   )
   GOTO:EOF



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
Imágen de perfil de Antoni Masana

Bat que al encontrar campo en interior de archivo lo mueva a otro directorio

Publicado por Antoni Masana (269 intervenciones) el 09/08/2012 12:24:08
Unas cuantas mejoras que siempre estan bien

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
 
CD C:\Super
 
IF NOT EXIST Cod_Errados.txt  GOTO EOF
IF NOT EXIST           *.hse  GOTO EOF
IF     EXIST Fil_Errados.txt  TYPE nul >Fil_Errados.txt
 
FOR /F %%a IN (Cod_Errados.txt) DO call :Busca
FOR /F %%a IN (Fil_Errados.txt) DO IF EXIST %%a  DEL %%a
GOTO:EOF
 
:Busca
   FOR %%b IN (*.hse) DO (
       FIND /I "%%a" %%b >nul
       IF NOT Errorlevel 1 ECHO %%b >>Fil_Errados.txt
   )
   GOTO:EOF
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

Bat que al encontrar campo en interior de archivo lo mueva a otro directorio

Publicado por Sergio (18 intervenciones) el 10/08/2012 02:23:31
Excelente..... muy bueno......

Solo que cuando el codigo me borra los archivos *.hse que se encuentran en el archivo Fil_Errados.txt ya no me permite copiar el archivo para enviarlo por correo como evidencia.

Como seria si antes de eliminarlos de C:\Super, los quisiera pegar en la ruta C:\Super\File_errados , y de ahi recien eliminarlos de la ruta C:\Super de acuerdo al archivo Fil_Errados.txt


Gracias Antoni por el apoyo brindado..

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
Imágen de perfil de Antoni Masana

Bat que al encontrar campo en interior de archivo lo mueva a otro directorio

Publicado por Antoni Masana (269 intervenciones) el 10/08/2012 07:55:28
Copiando antes de ser borrado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
 
CD C:\Super
 
IF NOT EXIST Cod_Errados.txt  GOTO EOF
IF NOT EXIST           *.hse  GOTO EOF
IF     EXIST Fil_Errados.txt  TYPE nul >Fil_Errados.txt
 
FOR /F %%a IN (Cod_Errados.txt) DO call :Busca
 
FOR /F %%a IN (Fil_Errados.txt) DO (
    IF EXIST %%a  COPY %%a C:\Super\File_errados\%%a /Y
    IF EXIST %%a  DEL  %%a
)
GOTO:EOF
 
:Busca
   FOR %%b IN (*.hse) DO (
       FIND /I "%%a" %%b >nul
       IF NOT Errorlevel 1 ECHO %%b >>Fil_Errados.txt
   )
   GOTO:EOF
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