Diretório com o mesmo nome subdiretório move

1

Eu fiquei preso e não consigo encontrar uma maneira rápida de corrigir isso.

Eu tenho um disco rígido externo com uma estrutura de pastas como esta:

  • \folder1
  • \folder2
  • \folder3

alguns deles têm um subdiretório com o mesmo nome, assim

  • \folder1
  • \folder2\folder2
  • \folder3\folder3

Eu adoraria usar o batch, se possível, para basicamente procurar apenas pelo mesmo nome em um diretório e, se ele corresponder, mova todos os arquivos de \folder2\folder2 para \folder2 .

Eu tenho um total de 640 pastas para obter essa correção.

Eu encontrei este link que era o oposto do que eu queria fazer. Tudo o que eu cansei na minha estrutura de teste não funcionaria.

    
por CodyD 02.08.2015 / 01:10

1 resposta

0

Primeiro de tudo, se possível, Eu sugiro que você faça backup de toda a árvore de diretórios, apenas no caso de algo der errado. Então, tente digitar o comando

for /d %d in (*) do @echo move %d\%d\* %d

Isso deve mostrar algo como

move folder1\folder1\* folder1
move folder2\folder2\* folder2
move folder3\folder3\* folder3

Se isso parece uma sequência plausível de comandos, deixe de fora o echo :

for /d %d in (*) do @move %d\%d\* %d

Isso gerará uma mensagem de erro para folder1 , já que folder1\folder1 não existe. Ele também dará uma mensagem de erro para qualquer pasta em que a pasta de segundo nível esteja vazia.

Se você quiser suprimir as mensagens de erro das pastas em que a pasta de segundo nível não existe, coloque o seguinte em um arquivo em lotes:

@echo off
for /d %%d in (*) do (
    if exist %%d\%%d\nul (
        echo move %%d\%%d\* %%d
    ) else (
        echo %%d\%%d doesn't exist.
    )
)

ou simplesmente

@echo off
for /d %%d in (*) do if exist %%d\%%d\nul echo move %%d\%%d\* %%d

(Observe que você deve usar %% em um arquivo em lotes onde você usa % diretamente no prompt de comando.)

Obviamente, existe o risco de você ter arquivos com nomes idênticos em um diretório e seu subdiretório, por exemplo, folder2\shopping.lst e folder2\folder2\shopping.lst . No meu teste rápido em uma árvore de diretórios sem importância, ele perguntou se eu queria sobrescrever (ou seja, desmoronar) o arquivo de destino (nível superior). Como eu disse, sugiro que você faça backup dos seus arquivos primeiro, só por segurança.

    
por 02.08.2015 / 02:03