Mover todos os arquivos de subpastas de vários níveis para a subpasta de segundo nível

0

Estou procurando pelo comando do Windows ou script em lote para me ajudar. Passei 3 horas lendo / tentando encontrar uma solução que eu sei que existe, mas minha falta de scripts / programação não está ajudando, esperando que alguns possam me ajudar.

Eu tenho um conjunto de pastas e arquivos que eu gostaria de trazer para a subpasta de segundo nível, que neste exemplo seria subpasta1 e subpasta1 e subpasta3 etc.

D: pasta> subpasta1> subpasta> subpasta> arquivos

     >subfolder2>subfolder>files

     >subfolder3>subfolder>files

     >subfolder4>subfolder>subfolder>files
user2827759
fonte

Respostas:

0

Seu objetivo é arriscado - o que acontece se o mesmo nome de arquivo existir em vários subdiretórios? Somente uma versão pode existir em uma determinada pasta.

O seguinte prompt de comando, um liner moverá os arquivos conforme solicitado, e os nomes duplicados substituirão os arquivos já existentes com esse nome:

for /d %A in ("d:\folder\*") do @(pushd "%A"&(for /r /d %B in (*) do @move /y "%B\*" "%A" 2>nul)&popd)

Ou, como um script em lote:

@echo off
for /d %A in ("d:\folder\*") do (
  pushd "%A"
  for /r /d %B in (*) do move /y "%B\*" "%A" 2>nul
  popd
)
dbenham
fonte
Perfeito!. funciona exatamente como pretendido. os arquivos são exclusivos, portanto, nenhuma substituição ocorrerá. Muito obrigado. Eu gostaria que o superusuário / stackexchange tivesse construído o recurso "comprar café" para mostrar apreço com mais do que apenas palavras. Obrigado novamente.
user2827759