Ms-Dos - Bat para copiar archivos y me genere un txt de los archivos que no encontro

 
Vista:

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 15/03/2018 00:53:56
Hola,

Quiero realizar una bat que me copie imagenes de una capeta a otra, y me genere un txt con el nombre de la imagen que no copio o que no encontro en la ruta expecificada, es decir

En este caso no existe la imagen3, asi que quiero que me genere un txt con el nombre de la imagen que no encontro. Se los agradeceria si me ayudan con esto.

1
2
3
4
5
6
7
8
9
10
11
12
@ echo off
color 02
 
 
echo                           Generacion Imagenes
 
 
copy  D:\Origen\2018\Imagen1.tif   "C:\Destino\Imagen\"
copy  D:\Origen\2018\Imagen2.tif   "C:\Destino\Imagen\"
copy  D:\Origen\2018\Imagen3.tif   "C:\Destino\Imagen\"
 
Pause
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 16/03/2018 11:43:54
Opción 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ echo off
color 02
echo                           Generacion Imagenes
For %a in (1 2 3) do Call Copia %%a
Pause
goto :EOF
:Copia
   Set IMAGEN=imagen%1
   if not exist D:\Origen\2018\%IMAGEN%.tif goto Falta
      copy  D:\Origen\2018\%IMAGEN%.tif   "C:\Destino\Imagen\"
      goto :eof
:Falta
   Type nul >C:\Destino\Imagen\%IMAGEN%.txt
   goto :eof

Opción 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ echo off
color 02
echo                           Generacion Imagenes
For %a in (imagen1 imagen2 imagen3) do Call Copia %%a
Pause
goto :EOF
:Copia
   Set IMAGEN=%1
   if not exist D:\Origen\2018\%IMAGEN%.tif goto Falta
      copy  D:\Origen\2018\%IMAGEN%.tif   "C:\Destino\Imagen\"
      goto :eof
:Falta
   Type nul >C:\Destino\Imagen\%IMAGEN%.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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 17/03/2018 03:13:33
Gracias por contestar, bueno disculpa por no ser claro en lo que necesitaba,como para aclarte un poco, esas tres imagenes son un ejemplo, pero en realidad son copiados de backup de imagenes donde son mas de mil imagenes, todas con diferente nombre donde el nombre de las imagenes son por numeros, es decir los nombres de las iamgenes son de esta forma.

12345_1.tif
12345_2.tif
44554_3.tif
67773_4.tif
12345_5.tif
12345_6.tif
43443_1.tf
43443_2.tf
43443_3.tf
43443_4.tf
43443_5.tf
99898_2.tif
99898_3.tif
99898_4.tif
99898_5.tif

Asi que en realidad no se sabe cual puede faltar ya que son demasiadas imagenes, asi que por eso necesito el txt con los nombre de las imagenes que no existan, se lo agradeceria si me ayudaras de nuevo.
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 19/03/2018 08:50:38
¿Hay alguna relación de las imágenes?
Quiero decir ¿siguen alguna secuencia? ¿Existe un fichero con la lista de imágenes?
Para saber que falta hemos de saber qué buscamos.

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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por diana xiomara montaño rodriguez (1 intervención) el 21/03/2018 20:39:17
Buen dia,

Tengo una pregunta yo quiero un script que me busque unas imagenes que tengo en un TXT ... en varios repositorios y me las copie en otro que yo le indique.

Estoy tratandolo de hacer por .bat pero son mas de tres millones y este se me bloquea.

Por favor me ayudan que mas puedo realizar para ser mas rapido.
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 21/03/2018 22:33:45
Envíame el TXT y el BAT y la lista de repositorios, no las imágenes y te comento que puedes hacer.

De todas formas verificando uno a uno aunque pudiese hacer 100 al segundo tardaría 8 horas y se tiene que poder hacer muchísimo más rápido. Todo depende de como tengas la información.

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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 24/03/2018 22:31:54
Buen Dia,

Si, siguen una secuencia pero solo después del guion bajo, pero todas tienen diferente cantidad de imágenes, lo único que saco son los nombre de las imágenes, pero es un proceso que todos los días se efectúa y el nombre de las imágenes a extraer cada día cambian cada día, así que en el listado que yo tengo simplemente las copio del repositorio al disco de mi equipo, la única forma de saber que me falto es con un dir a la carpeta del repositorio y a la carpeta donde las copie en mi equipo y así en un excel comparar y mirar que me falta.
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 27/03/2018 07:38:51
Este pequeño bat puede que te facilite el trabajo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
set Repositorio=R:\Repos
set Copia_Fotos=C:\Copia
set Orig=C:\Tmp\Lista_Orig.txt
set Dest=C:\Tmp\Lista_Dest.txt
 
DIR %Repositorio%\*.* /B /ON >%Orig%
DIR %Copia_Fotos%\*.* /B /ON >%Dest%
 
FC %Orig% %Dest% >nul 2>&1
IF %ErrorLevel% EQU 1 goto Diferencias
   echo.
   echo. El origen y la copia son iguales
   echo.
   del %Orig%
   del %Dest%
   goto :EOF
 
:Diferencias
   echo.
   echo.!!! AVISO ¡¡¡  Se han detectado diferencias
   echo.
   echo.
   echo. Pulse una tecla para ver las diferencias
   pause
 
   FC %Orig% %Dest% | more
   goto :EOF

Hay que modificar las rutas de los SET.

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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 28/03/2018 02:19:31
Buen Dia,

Esta excelente la bat, me ahorra trabajo Gracias, pero existe la posibilidad de que me de un resultado en el txt las que realizando una comparativa entre R:\Repos y C:\Copia me genere las que no se repitan, asi ya podria saber cuales son las que me faltan.
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 28/03/2018 07:16:13
El BAT lo que hace es comparar la lista de ficheros de dos directorios y si hay diferencias las muestra.
Una forma de copiar solo los nuevos ficheros es com la instrucción XCopy

1
2
3
set Repositorio=R:\Repos\*.*
set Copia_Fotos=C:\Copia\.
XCopy %Repositorio% %Copia_Fotos% /Y /M

Así no hay que copiar cada vez todos los archivos y la copia es más rápida y segura. El parámetro /Y copia el fichero aunque exista en el destino, lo que puede provocar sobreescribir un fichero con el mismo nombre y contenido diferente.

Una opción para evitarlo y saber que pasa durante la copia

1
2
3
set Repositorio=R:\Repos\*.*
set Copia_Fotos=C:\Copia\.
XCopy %Repositorio% %Copia_Fotos%  /M >C:\tmp\Copia_Bien.txt 2>C:\tmp\Copia_Mal.txt

Ahora tenemos un fichero con lo que va copiando y otro con los errores y si lo quieres todo en el mismo fichero:

1
2
3
set Repositorio=R:\Repos\*.*
set Copia_Fotos=C:\Copia\.
XCopy %Repositorio% %Copia_Fotos%  /M >C:\tmp\Copia.txt 2>&1

Como no acabo de entender toda la operativa de la copia no entiendo a que te refieres con: a las que no se repitan.

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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 29/03/2018 03:42:40
Buen Día,

El ultimo script que me enviaste me sirve mucho, ahora me voy a centrar es en los archivos copiados y no en copiar archivos.

De esta forma yo genero las imágenes, se ejecuta un paquete por sql el cual realiza el copiado de imágenes desde el repositorio a mi equipo, hasta ahi todo muy bien, el problema radica en que en el repositorio digamos que tengo 4000 imagenes y en mi equipo copio 3890 imagenes, por tanto me faltan 110 imágenes, tu BAT me genera el archivo Lista_Orig.txt con las imágenes del repositorio y el archivo Lista_Dest.txt con las imagenes de mi equipo, hasta ahi muy bien, ahora quisiera es que me compare la información de estos dos archivos y me genere un txt con el nombre de las imágenes de el archivo Lista_Orig que no se encuentren en el archivo Lista_Dest

Lo siento sino estoy siendo algo claro.
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 29/03/2018 06:58:59
He realizado un cambio en el que genera un fichero con las imágenes del origen que no están en el destino.

Te adjunto tres ficheros

- Compara.bat
- Compara.awk
- mawk.exe

El fichero BAT es el mismo que te puse en el post del día 27 con un pequeño cambio, en lugar de utilizar el FC para ver las diferencias utilizo otro comando que no es nativo de Windows ni de MS-DOS, es de Unix/Linux que alguien creo para Windows.
El programa original se llama AWK y es una herramienta fabulosa. En mi empresa la estamos utilizando.

El fichero AWK es un fichero de texto donde están las instrucciones del AWK.

El fichero EXE es la AWK para MS-DOS.

¿Que hace? Te explico como funciona con el codigo de la AWK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
      # --- guarda el nombre del fichero
 
    { file=$0
 
      # -- Si tiene el directorio lo elimina del nombre
 
      if(index($0,"\\") > 0) {
          for(a=length($0); a>1; a--) {
              if(substr($0,a,1) == "\\" ) { file=substr($0,a+1); break }
          }
      }
    }
 
    # --- Procesa el fichero Origen
    # --- Guarda en una tabla todos ficheros del origen
 
FILENAME == ARGV[1] { tabla[file] ; next }
 
    # --- Procesa el fichero Destino
    # --- Elimina de a tabla los ficheros del destino
 
FILENAME == ARGV[2] { if(file in tabla) delete tabla[file] }
 
    # --- Final del los ficheros
    # --- Imprime los ficheros de la tabla que no han siro eliminados
 
END { for(a in tabla) printf("%s\n",a) }

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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 02/04/2018 18:32:31
Buen Día,

Si sr, con esto me genera el archivo Lista_Falta.txt con las diferencias perfectamente, te lo agradezco.

Me confirmas algo, en caso de que tuviera los txt Lista_Dest - Lista_Orig ya generados y solo quisiera generar las diferencias, probe comentariando los DIR y ps esta me las genero perfectamente, para este caso es mejor realizar una bat sin que llame AWK o solo comentariandolos estaria bien?
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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Antoni Masana (811 intervenciones) el 03/04/2018 07:10:15
En el caso que ya tengas las listas y solo quieras comparar con este código hay suficiente:

1
2
3
4
5
6
7
8
9
10
11
@echo off
set Orig=C:\Tmp\Leo\Lista_Orig.txt
set Dest=C:\Tmp\Leo\Lista_Dest.txt
set Falt=C:\Tmp\Leo\Lista_Falta.txt
mawk -f compara.awk %Orig% %Dest% >%Falt%
echo.
echo.La lista de ficheros que no se han copiado esta en el fichero:
echo.
echo.   %Falt%
echo.
echo.

Y sobran los ECHO. Y si lo quieres más simple y sin rutas:

1
@mawk  -f compara.awk  Lista_Orig.txt  Lista_Dest.txt  >Lista_Falta.txt

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

Bat para copiar archivos y me genere un txt de los archivos que no encontro

Publicado por Leo (7 intervenciones) el 03/04/2018 15:33:18
Buen Dia,

Perfecto, ya con esto se me simplifica mas el proceso.

Muchas Gracias por su 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