Ho una cartella (chiamiamola A) con molte sottocartelle B, C, D, E, che poi hanno di nuovo sottocartelle B1, B2, B3, ... C1, C2, C3 ...
Come posso utilizzare cmd per spostare tutti i file da tutte le sottocartelle nella cartella "root" A?
Ho una cartella (chiamiamola A) con molte sottocartelle B, C, D, E, che poi hanno di nuovo sottocartelle B1, B2, B3, ... C1, C2, C3 ...
Come posso utilizzare cmd per spostare tutti i file da tutte le sottocartelle nella cartella "root" A?
Risposte:
Il mio post originale ha trascurato di includere l'estensione del file nel comando di spostamento.
%~ni
restituisce solo il nome base, è necessario utilizzare%~nxi
per ottenere sia il nome file che l'estensione! Spero che tu non abbia alterato i tuoi nomi di file sul mio account!
Da un prompt dei comandi:
cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"
Se in seguito è necessario ripulire le cartelle vuote:
for /d %i in (*) do @rd /s /q "%i"
Ora, se hai degli scontri con i nomi dei file, sei da solo. È possibile aggiungere il /y
parametro al move
comando (prima di "%i"
) per forzare le sovrascritture. Se vuoi qualcosa di diverso, avrai bisogno di un altro programma in grado di rinominare automaticamente tutto per te.
Inoltre, se si desidera utilizzarlo in un file batch, modificare tutto %
in %%
.
FOR /r
- bello!
Crea una cartella e copia tutte le altre cartelle in essa contenute, quindi fai clic con il tasto destro su quella cartella e seleziona Cerca . Nella casella di ricerca immettere *.*
.
Questo elencherà tutti i file e le cartelle. Seleziona tutti i file che desideri nella directory principale e tagliali. Passare alla directory principale e incollare tutti i file lì.
Installa Cygwin (o un altro ambiente Unix per Windows) ed esegui quanto segue:
cd A
find . -type f -exec mv {} . \;
mv
e delle find
varianti, potrebbe essere necessario utilizzare find . -type f -exec mv -t . {} \;
invece.
mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 c
e touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/ccc
per preparazione.
find . -type f -exec mv {} . ;
e sembrava funzionare bene.