2012-07-30 13 views
7

He intentado hacer un script por lotes que copie todos los archivos * .tif ubicados en D: \ images (subcarpetas con nombre aleatorio aquí) a d: \ all.Windows archivos de copia por lotes de subcarpetas a una carpeta

xcopy D:\Downloads\*.TIF D:\temp\ /s 

funciona, pero se copia con todos los árboles de carpetas. Traté de usar otras teclas, pero no funciona. ¡Gracias por ayudar!

Respuesta

26

FOR es tu amigo. Lea HELP FOR en la opción /R y la sustitución de la variable %~nx; y luego prueba este código muy simple.

pushd d:\downloads 
    for /r %%a in (*.tif) do (
    echo COPY "%%a" "d:\temp\%%~nxa" 
    ) 
    popd 

observar cuidadosamente los resultados y luego retire el comando ECHO.

Usted tendrá que redefinir el código para hacer frente a los errores, nombres duplicados, casos extremos, los nombres con caracteres reservados, las condiciones de carrera, eventos cósmicos ...

+0

¡Gracias, es lo que necesito! –

+1

¡Patrones de archivos separados con comas! Cree un .bat y reemplace 'd: \ downloads' con'% 1' y 'd: \ temp \ %% ~ nxa' con'% 2'. Luego tendrá un comando reutilizable, coloco mi Dropbox \ bin en PATH para que pueda usarlo en todas mis computadoras. Un gran script bat, gracias! – caiohamamura

0

También puede utilizar el software gratuito XXCOPY. Funciona como XCOPY, pero cuando usa un parámetro/SG, aplana los subdirectorios. Vea cómo usarlo here.

2
pushd D:\Source 
    for /r %%a in (*.?*) do (
     MOVE "%%a" "D:\Destination folder\%%~nxa" 
    ) 
popd 
+0

esto tomará todos los archivos de la subcarpeta y los moveré a la carpeta de destino; también puede cambiar el movimiento para copiar – Stur

3

Archivos buscados usando el explorador de archivos de Windows para, p. Ej. * .gif, obtuve archivos en la ventana de búsqueda, utilicé Editar => Seleccionar todo, copié y luego pegué en la carpeta deseada. Esto copió todos los archivos gif en todos los subdirectorios en una sola carpeta. Para una gran cantidad de archivos, a veces se cuelga/no responde, pero de lo contrario funciona bien.

+0

¡Esta es una manera bastante fácil de hacerlo! :) – user3640967

Cuestiones relacionadas