2012-07-30 23 views
7

Avevo provato a creare uno script batch che copi tutti i file .tif situati in D: \ images (sottocartelle con nome casuale qui) a d: \ all.Copia file di Windows da sottocartelle a una cartella

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

funziona, ma copia con l'albero di tutte le cartelle. Ho provato ad usare altre chiavi, ma non funziona. Grazie per l'aiuto!

risposta

26

FOR è tuo amico. Leggi HELP FOR sull'opzione /R e la sostituzione di variabile %~nx; e quindi prova questo codice molto semplice.

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

guardare con attenzione i risultati e quindi rimuovere il comando ECHO.

Si dovrà perfezionare il codice per far fronte a errori, i nomi duplicati, casi limite, i nomi con caratteri riservati, condizioni di gara, eventi cosmici ...

+0

Grazie, è quello che mi serve! –

+1

Modelli di file separati con virgole! Crea un .bat e sostituisci 'd: \ downloads' con'% 1' e 'd: \ temp \ %% ~ nxa' con'% 2'. Quindi avrai un comando riutilizzabile, metto il mio Dropbox \ bin in PATH così posso usarlo su tutti i miei computer. Un grande script di pipistrello, grazie! – caiohamamura

0

È inoltre possibile utilizzare il freeware XXCOPY. Funziona come XCOPY, ma quando usi un parametro/SG, appiattisce le sottodirectory. Vedi come usarlo here.

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

questo prenderò tutti i file dalla sottocartella e li sposti nella cartella di destinazione, puoi anche cambiare la mossa per copiare – Stur

3

File cercati utilizzando Windows File Explorer per es. * .gif, ho ottenuto i file nella finestra di ricerca, usato Modifica => Seleziona tutto, copia e quindi incollato nella cartella desiderata. Questo copiò tutti i file gif in tutte le sottodirectory in una singola cartella. Per un numero elevato di file, a volte si blocca/non risponde, ma in caso contrario funziona correttamente.

+0

Questo è in realtà un modo abbastanza semplice per farlo! :) – user3640967

Problemi correlati