2011-01-15 24 views
7

Ho una cartella con molte sottocartelle con uno o più file in ciascuna. Sto provando a scrivere un file batch che sposta tutti quei file in C: \ songs (per esempio). Qualsiasi aiuto? Ho già provatoComando DOS per spostare tutti i file nelle sottodirectory di livello superiore

C:\>FOR /R C:\Test %i IN (*) DO MOVE %i C:\Songs 

Le cartelle di prova e le canzoni presenti, ma ottengo un errore che dice

%i was unexpected at this time. 

Che cosa sto facendo di sbagliato?

risposta

5
FOR /R %i IN (C:\Test\*) DO MOVE "%i" C:\Songs 

In un file batch, deve essere %% i. Strana stranezza del lotto.

+0

Hai eseguito questo? Per me basta appendere la console. Strano. –

+0

Se la cartella è enorme, ci vorrà molto tempo per analizzare tutto in modo ricorsivo. Sì, l'ho provato, su Win7 e ora su XP. MS-DOS originale avrebbe tuttavia bisogno di \ *. \ *. – SilverbackNet

+0

Works. Grazie :) – Rishi

5

(spostare i file in sotto-directory fino 1)

for /r %x in (*.*) do move "%x" "%x"/../.. 

(ultima parte io di solito uso inclinazioni arretrate ma questa cosa pazzesca mantenuto cancellandoli per qualche motivo. Funzionerà in entrambi i casi però)

(eliminare le directory non necessarie)

for /d /r %x in (bin) do rd "%x" 

cioè, se si ha un po 'di directory con i file nelle directory "bin" sotto quelle e si voleva per spostare tutto su 1 ed eliminare le directory "bin".

+0

Come cambieresti il ​​primo comando per utilizzare la cartella selezionata anziché '(* . *) '? (Questo è per l'uso in un file batch che verrà quindi utilizzato con un comando del menu contestuale personalizzato.) – u01jmg3

Problemi correlati