Eu tenho uma pasta (vamos chamá-la de A) com muitas subpastas B, C, D, E, que novamente têm 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?
Eu tenho uma pasta (vamos chamá-la de A) com muitas subpastas B, C, D, E, que novamente têm 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?
Respostas:
Minha postagem original foi negligenciada para incluir a extensão do arquivo no comando mover.
%~niretorna apenas o nome da base, você precisa usar%~nxipara obter o nome do arquivo e a extensão! Espero que você não tenha mutilado seus nomes de arquivos na minha conta!
Em 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 posteriormente:
for /d %i in (*) do @rd /s /q "%i"
Agora, se você tiver algum conflito de nome de arquivo, estará por sua conta. Você pode adicionar o /yparâmetro ao movecomando (antes de "%i") para forçar substituições. Se você quiser algo diferente, precisará de outro programa que possa renomear tudo automaticamente.
Além disso, se você quiser usar isso em um arquivo em lotes, altere todos os %para %%.
FOR /r- legal!
Crie uma pasta e copie todas as outras pastas nela, clique com o botão direito do mouse 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 para o diretório raiz e cole todos os arquivos lá.
Instale o Cygwin (ou outro ambiente Unix para Windows) e execute o seguinte:
cd A
find . -type f -exec mv {} . \;
mve das findvariantes, pode ser necessário usá-lo find . -type f -exec mv -t . {} \;.
mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 ce touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccpara preparação.
find . -type f -exec mv {} . ;E parecia funcionar bem.