Como faço para mover todos os arquivos em uma árvore para a raiz da árvore?

10

Eu tenho uma pasta (vamos chamá-la de A) com muitas subpastas B, C, D, E, que então tem novamente as subpastas B1, B2, B3, ... C1, C2, C3 ...

Como posso usar o cmd para mover todos os arquivos de todas as subpastas para a pasta "raiz" A?

    
por Rook 18.10.2011 / 21:35

3 respostas

12

My original post neglected to include the file's extension in the move command. %~ni only returns the basename, you need to use %~nxi to get both the filename and extension! I hope you haven't mangled your filenames on my account!(

De um prompt de comando:

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

Se você precisar limpar as pastas vazias depois:

for /d %i in (*) do @rd /s /q "%i"

Agora, se você tiver conflitos de nome de arquivo, estará por sua conta. Você pode adicionar o parâmetro /y ao comando move (antes do "%i" ) para forçar a sobrescrita. Se você quiser algo diferente, precisará de outro programa que possa renomear tudo automaticamente para você.

Além disso, se você quiser usar isso em um arquivo de lote, altere todos os % para %% .

    
por 18.10.2011 / 22:07
2

Crie uma pasta e copie todas as outras pastas para ela, clique com o botão direito nessa pasta e selecione Pesquisar . Na caixa de pesquisa, insira *.* .

Isso listará todos os arquivos e pastas. Selecione todos os arquivos que você deseja no diretório raiz e corte-os. Navegue até o diretório raiz e cole todos os arquivos lá.

    
por 11.11.2012 / 19:16
0

Instale o Cygwin (ou outro ambiente Unix para Windows) e execute o seguinte:

cd A
find . -type f -exec mv {} . \;
    
por 18.10.2011 / 21:52