xcopy archivos en un solo directorio


21

Me gustaría usar xcopy en una máquina Windows para extraer todos los archivos con extensión .png en un solo directorio.

Lo intenté xcopy C:\folder\*.png /s C:\png\, pero mantiene los subdirectorios dentro de la carpeta \ (por ejemplo, en C: \ png, hay C: \ png \ a \ b \ c \ img.png) que no quiero. Simplemente quiero todo .png dentro de C: \ png sin que retenga la estructura de directorios que estaba en la carpeta C: \.


Respuestas:


39

Esto se puede hacer con buenos viejos for:

for /r C:\Folder %f in (*.png) do @copy "%f" C:\png

Nada sofisticado.


¡Funciona! ¿Te importaría explicar para qué %fsirve?
bobobobo

Es la variable del bucle.
Joey

3
Esto no funcionó para mí, obtuve algo al respecto f" was unexpected at this time. Cambiando %fa %%ftrabajado. Sin embargo, estaba ejecutando esto en un archivo por lotes: si está utilizando el comando FOR en la línea de comandos en lugar de en un programa por lotes, use solo un signo de porcentaje:% G en lugar de %% G. ss64.com/nt/for.html
ta.speot.is

1
Uhm si. Eso es esperado y exactamente como lo citó. ¿De dónde vendría tu confusión?
Joey

1
@kayleeFrye_onDeck: Que yo sepa, no hay variables especiales. Lo único que me viene a la mente es que las personas que no están familiarizadas forpueden confundirse con las dos dcosas diferentes %~dd. La fordocumentación sugiere usar letras mayúsculas para las variables para evitar confusiones, pero las sustituciones siguen siendo claramente distinguibles del nombre de la variable, creo.
Joey

1

Si tiene instalado cygwin, este sería un trabajo para encontrar:

cp `find /cygdrive/c/folder/* -name '*png'` /cygdrive/c/png/

(aunque eso tendrá problemas si alguno de los nombres de archivo tiene espacios en ellos; findsin embargo , encontrará alguna variante de un comando que funcionará en todas las circunstancias)

Si está ejecutando Vista, 2003 o 2008, entonces el "forfiles" menos flexible pero aún útil es su amigo. Algo como:

FORFILES /P c:\folder\ /M *.png /S /C "cmd /c copy @file c:\png\"

Nota: No he probado ninguno de los comandos anteriores, pero en teoría deberían funcionar ...


+1 acaba de verificar que el comando FORFILES funciona. Lo ejecuté dos veces y copió la segunda vez sin aviso, por lo que supongo que solo se sobrescribe si encuentra duplicados.
hyperslug
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.