file xcopy in un'unica directory


21

Vorrei usare xcopy su un computer Windows per estrarre tutti i file con estensione .png in una singola directory.

Ho provato xcopy C:\folder\*.png /s C:\png\, ma mantiene le sottodirectory all'interno della cartella \ (ad esempio in C: \ png, c'è C: \ png \ a \ b \ c \ img.png) che non voglio. Voglio semplicemente tutto .png dentro C: \ png senza che mantenga la struttura di directory che era nella cartella C: \.


Prova
questo-

Risposte:


39

Questo può essere fatto con un buon vecchio for:

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

Nulla di bello.


Funziona! Ti interessa spiegare a cosa %fserve?
Bobobobo,

È la variabile loop.
Joey,

3
Questo non ha funzionato per me, ho qualcosa per l'effetto f" was unexpected at this time. Passando %fal lavoro %%f. Tuttavia, lo stavo eseguendo in un file batch: se si utilizza il comando FOR dalla riga di comando anziché in un programma batch, utilizzare solo un segno di percentuale:% G anziché %% G. ss64.com/nt/for.html
ta.speot.is

1
Uhm, si. È previsto ed esattamente come hai citato. Da dove verrei la tua confusione?
Joey,

1
@kayleeFrye_onDeck: Per quanto ne so non ci sono variabili speciali. L'unica cosa che mi viene in mente è che le persone che non hanno familiarità forpossono confondersi sui due diversi din cose come %~dd. La fordocumentazione suggerisce di usare lettere maiuscole per le variabili per evitare confusione, ma credo che le sostituzioni siano ancora chiaramente distinguibili dal nome della variabile.
Joey,

1

Se hai installato cygwin, questo sarebbe un lavoro per trovare:

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

(anche se ciò avrà problemi se uno qualsiasi dei nomi di file contiene degli spazi - troverai comunque una variante di un findcomando che funzionerà in tutte le circostanze)

Se esegui Vista, 2003 o 2008, i "forfile" meno flessibili ma comunque utili sono i tuoi amici. Qualcosa di simile a:

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

Nota: non ho testato nessuno dei comandi precedenti, ma in teoria dovrebbero funzionare ...


+1 ha appena verificato che il comando FORFILES funziona. L'ho eseguito due volte e ha copiato la seconda volta senza il prompt, quindi presumo che sovrascriva solo se trova duplicati.
hyperslug
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.