Ms-Dos - Copiar uno o varios archivos de texto si encuentra una palabra

   
Vista:

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por paul (7 intervenciones) el 17/03/2014 13:16:21
Se puede crear una archivo bat, que busque dentro de una carpeta todos los archivos .txt, que recorra cada uno buscando una palabra. Si encuentra dicha palabra, copiar el archivo.txt que la contiene en otra carpeta?

1. buscar una palabra en los archivos .txt
2. copiar los que contengan una palabra especifica
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
información
Otras secciones de LWP con contenido de Ms-Dos
- Cursos de Ms-Dos
- Temas de Ms-Dos
información
Cursos y Temas de Ms-Dos
- Curso de MS-DOS
- DOS the Easy Way Guide to MS-DOS
- Manual MS-DOS
Imágen de perfil de Antoni Masana

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por Antoni Masana (269 intervenciones) el 18/03/2014 06:47:10
Se puede hacer de varias formas:

Te pongo tres ejemplos

1
2
3
@echo off
findstr /i /m {Palabra} *.txt >temporal.tmp
FOR /F %%a in ( Temporal.tmp ) do copy %%a {destino}


1
2
3
4
5
@echo off
FOR %%a in (*.txt) do (
    find /i "{palabra}" %%a >nul
    if errorlevel 0 copy %%a {destino}
    )


1
2
@echo off
for /F %%a in ( 'findstr /i /m echo *.bat' ) do @copy %%a {destino}
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

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por paul (7 intervenciones) el 20/03/2014 13:14:33
@echo off
findstr /i /m {Palabra} *.txt >temporal.tmp
FOR /F %%a in ( Temporal.tmp ) do copy %%a {destino}

no acabo de entender "temporal.tmp"
- lee un archivo .txt guardándolo en .tmp? y asi sucesibamente con con todos los txt que tengo?

Mi problema es el siguiente:
tengo una carpeta con archivos .txt, dentro de la cual quiero que se ejecute el bat, el cual busque una palabra, y que solo copie aquells .txt que tengan esa palabra.


Agradezco mucho 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 Antoni Masana

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por Antoni Masana (269 intervenciones) el 21/03/2014 06:52:00
Te explico lo que hace cada opción

1
2
3
@echo off
FINDSTR /i /m {Palabra} *.txt >temporal.tmp
FOR /F %%a in ( Temporal.tmp ) do copy %%a {destino}

Línea 1 - Obvió
Línea 2 - FINDSRTR busca un texto en todos los archivos con extensión TXT y devuelve el nombre de los archivos que contengan este texto, el contenido se guarda en un fichero temporal, que bien podría llamarse %Temp%\popo.tmp.
Línea 3 - El FOR lee el contenido del fichero temporal (que es la lista de ficheros encontrados por el FINDSTR) y realiza la acción de copiar
Línea 4 - Que para ser pulidos falta. Borrar el fichero temporal.


1
2
3
4
5
@echo off
FOR %%a in (*.txt) do (
    FIND /i "{palabra}" %%a >nul
    IF errorlevel 0 copy %%a {destino}
    )

Línea 1 - Obvió
Línea 2 - El FOR devuelve uno a uno la lista de ficheros TXT
Línea 3 - FINDSRTR busca un texto en el archivo devuelto por el FOR. Se oculta la salida de mensaje
Línea 4 - Si el encuentra el texto ErrorLevel vale 0 y copia el archivo, en caso contrario vale 1
Línea 5 - Fin del FOR

1
2
@echo off
for /F %%a in ( 'findstr /i /m {Palabra} *.txt' ) do @copy %%a {destino}

Línea 1 - Obvió
Línea 2 - Funciona casi igual que el primero pero sin fichero temporal, el resultado del FINSTR se pasa directamente al FOR.

NOTA: El tercero es mas limpio pero como esto es Microsoft las cosas no funcionan siempre como uno espera que lo hagan.

La primera estructura funciona siempre, las otras dos dependen de muchos factores, en este caso funciona bien pero según que cambios desees hacer puede haber problemas, el comando FOR de consola no es precisamente una instrucción amigable, más bien cuando la estaban programando le dio cagarrinas al programador y la termino deprisa y corriendo, creo que podría entrar en el libro Guinness de las chapuzas informáticas.

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

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por paul (7 intervenciones) el 21/03/2014 12:20:44
muchas gracias :)
ME FUNCIONO!!
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

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por paul (7 intervenciones) el 10/04/2014 10:44:12
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?
-------------
@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 respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Copiar uno o varios archivos de texto si encuentra una palabra

Publicado por emmanuel fuentes (1 intervención) el 16/12/2015 20:50:50
hola espero que me puedan ayudar.. desde copiar archivos de una gran lista de archivos ... de una carpeta a otra
el detalle es que tengo que verificar si dentro del archivo existe una cierta cadena de caracteres. En los codigos donde puedo implementar la dirección de la carpeta "Origen" solo logro apreciar donde dice "{destino]"
Les agredezco mucho su 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