Copiar archivos desde DOS del mismo formato

Copia y pega lo sigunete en un fichero bat llamado makecopy.bat
-- Inicio de copia y pega
rem parametros
rem %1 drive origen........ D:\ el disco o directorio que se desea rastrear siempre terminado en \
rem %2 drive destino........ C:\ simplemento eso la letra de la unidad que se desea sea el distino
rem %3 directorio destino .. Midirectorio\misfotos\ el resto del path siempre terminado en \
rem %4 extension a copiar... Jpg pues simplemente eso, la extension que se desea copiar
rem ejemplo de una llamada makecopy d:\ c:\ fotos\ jpg
xcopy %1*.%4 %2%3 /S /L>%2makefile.txt
rem con este xcopy rastreamos el disco origen (%1) buscando los ficheros con extsncion(*.%4) recursivamente
rem y por cada encuentro existoso se escibe una linea en el fichero de salida %2makefile.txt
md %2%3
rem simpre creamos el directorio de destion %2%3
for /F "tokens=1" %%A in (%2makefile.txt) do copy %%A %2%3
rem por cada linea escrita en el fichero makefile realizamos la copia de dicho fichero al destino.
rem esto esta probado usuando dos discos es decir el origen de busqueda en D:\ y el destini de salida en c:\
rem para rastrear un subdirectoio llamado afotos del origen seria
rem makecopy d:\afotos\ c:\ fotos\ jpg
---Fin de copia y pega

1 respuesta

Respuesta
1
Esta version esta mejorada para poder evitar la copia cíclica. Es decir de un disco sobre si mismo.
rem parametros
rem %1 drive origen........ d:\ el disco o directorio que se desea rastrear siempre terminado en \
rem %2 drive destino........ c:\ simplemento eso la letra de la unidad que se desea sea el distino
rem %3 directorio destino .. midirectorio\misfotos\ el resto del path siempre terminado en \
rem %4 extension a copiar... jpg pues simplemente eso, la extension que se desea copiar
rem ejemplo de una llamada makecopy d:\ c:\ fotos\ jpg
del %2%3*.* /Q /S
rd %2%3
rem borramos el contenido (ficheros) y el conteniente (directorio destino)
rem para evitar el error de copia ciclicla
del %2directorio.txt /S
rem borramos el fichero conteniendo la estructura de directorios
del %2makefile.txt /S
rem Borramos el fichero que contien los diferentes ficheros a copiar
dir %1*. /B >%2directorio.txt
rem obtenemos todos los directoios que deseamos rastrear desde nuestro origen y lo guardmos en un fichero texto
rem en este momento AUN no existe nuestro destino, por lo que no nos dara copia ciclica
for /F "tokens=1" %%A in (%2directorio.txt) do xcopy %1%%A\*.%4 %2%3 /S /L >>%2makefile.txt
rem rastreamos cada uno de los diferentes directoios y obtenomos los ficheros que queremos copiar.
rem observa que el fichero makefile es ahora de adiccion (dobe mayor que)
md %2%3
rem simpre creamos el directorio de destion %2%3
rem xcopy %1*.%4 %2%3 /S /L >%2makefile.txt
rem con este xcopy rastreamos el disco origen (%1) buscando los ficheros con extsncion(*.%4) recursivamente
rem y por cada encuentro existoso se escibe una linea en el fichero de salida %2makefile.txt
for /F "tokens=1" %%B in (%2makefile.txt) do copy %%B %2%3
rem por cada linea escrita en el fichero makefile realizamos la copia de dicho fichero al destino.
rem esto esta probado usuando dos discos es decir el origen de busqueda en D:\ y el destini de salida en c:\
rem para rastrear un subdirectoio llamado afotos del origen seria
rem makecopy d:\afotos\ c:\ fotos\ jpg
Hola gracias, pero ya lo intneté como me comentaste pero todavía no puedo, mi batch es este, ¿ké me falta?
xcopy c:\*.txt c:\textos\ /S /L>c:\makefile.txt
md c:\textos\
for /F "tokens=1" %%A in (c:\makefile.txt) do copy %%A c:\textos\
Hola expertos, necesito buscar en todo el disco duro los archivos del mismo tipo, .doc por ejemplo, en otro directorio para hacer un archivo por lotes, de antemano gracias, y saludos!
Concretando en tu bat seria así...
del c:\textos\*.* /Q/S
rd c:\textos\
del c:\directorios.XYZ /Q/S
del c:\makefile.XYZ /Q/S
dir c:\*. >c:\directorio.XYZ
for /F "tokens=1" %%A in (%c:\directorio.XYZ) do xcopy c:\%%A\*.txt c:\textos\ /S /L >>c:\makefile.XYZ
md c:\textos
for /F "tokens=1" %%B in (%c:\makefile.XYZ) do copy %%B c:\textos\
copy c:\*.txt c:\textos\
Esta ultima linea es para rastrear el contenido del directorio origen (en tu caso el disco c:\)
He cambiado las extensiones de los ficheros de txt a XYZ para poder tratarlos.
Si no hay errores de sintaxis esto te funcionara.
Saludos
No en la ultima version con parametrso falta al final la linea copy %1*.%4 %2%3
para rastrear el directorio origen

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas