Come usare dir e copy insieme per cercare directory e copiare in una cartella?


10

Devo cercare una cartella specificata e le sue sottodirectory per i file, quindi copiarli in una cartella specificata altrove. È possibile utilizzare dire copycon una pipa?

dir /s foo???.txt | copy g:\someplace

Quanto sopra non funziona. Il lato sinistro della pipe trova quello che voglio, ma non riesco a farlo copiare i file trovati. Sto usando il prompt dei comandi di Windows 7.


Che tipo di file ti serve per curiosità? Un carattere jolly non sarebbe sufficiente?
Dave,

Ho bisogno di usare i caratteri jolly (??? - "?" È un carattere jolly a una cifra) nel comando in modo che quanto sopra catturerebbe foo_42, foo_01, ecc. E quelli sarebbero in varie sottocartelle.
Flotsam N. Jetsam,

Risposte:


10

Potresti semplicemente usare xcopy:

xcopy /s foo???.txt g:\someplace

Questo conterrà la struttura della directory.

Se non si desidera la struttura della directory, è possibile effettuare le seguenti operazioni:

for /r %i in (foo???.txt) do xcopy /Y "%i" g:\someplace

Se lo stai usando in un file batch dovresti raddoppiare in %questo modo:

for /r %%i in (foo???.txt) do xcopy /Y "%%i" g:\someplace

In realtà, devo modificarlo un po '. Può essere fatto senza mantenere la struttura delle directory?
Flotsam N. Jetsam,

Haha, questo è quello di cui avevo paura :) (ecco perché l'ho espressamente dichiarato). Ma cosa faresti con nomi di file duplicati? Non può essere fatto con xcopy stesso ma puoi farlo con il piping di qualcosa su robocopy (o forse semplicemente copiarlo ma in un file batch). Quale versione di Windows hai?
Rik,

Windows 7. Non ci saranno duplicati per la mia applicazione.
Flotsam N. Jetsam,

Aggiunto il metodo per copiare in una directory. Fortunatamente non c'è bisogno di robocopy. Basta usare for /r.
Rik,

1
Sei forte. Vorrei poterti votare di nuovo. Grazie!
Flotsam N. Jetsam,
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.