Como mesclar pastas com nomes semelhantes com um arquivo em lotes

0

Eu estou tentando escrever um comando que pode mesclar todas as pastas dentro de um diretório que tenha nomes semelhantes. Agora todas essas pastas são nomeadas com exclusividade, então acho que você pode basear o conceito de "nome similar" nos 5 primeiros caracteres das pastas.

A pasta

será parecida com

longyellowbus-092092301
longyellowbus-92382012
5fatmimn-324535232
hintout-239119393
hintout-2391038949
hintout-2983419101
dogscats-293457893
2dummerboy-9293982
2dummerboy-29848292

e eu gostaria de mesclar todas as pastas que têm nomes semelhantes em uma pasta e parte do conteúdo dentro será o mesmo, por isso é OK para substituir. Então, basicamente, o resultado final será semelhante.

longyellowbus-092092301
5fatmimn-324535232
hintout-239119393
dogscats-293457893
2dummerboy-9293982

Os números no final após o traço - não importa, na verdade, vou tentar excluí-los após a mesclagem, para que tudo o que resta sejam apenas nomes de pastas limpas.

longyellowbus
5fatmimn
hintout
dogscats
2dummerboy

Eu tenho toco e espero que vocês possam ajudar. Isso é apenas parte de um comando maior que eu tenho escrito e essa é a parte em que fiquei perplexa.

    
por Juan Lopez 09.01.2017 / 03:04

1 resposta

0

O lote a seguir analisa a saída do diretório dividindo os nomes das pastas no delimitador -, %% A sendo o primeiro token e %% B o restante. Se um diretório como o primeiro token não existir, ele será renomeado, se o conteúdo do diretório antigo for forçado a ser movido e o diretório removido posteriormente. Edite o caminho para se adequar ao seu ambiente.

@Echo off
pushd "C:\path\to\your\base\folder"
for /f "Tokens=1* Delims=-" %%A in (
  'Dir /B /AD *-*'
) Do If Not Exist "%%A" (
  Ren "%%A-%%B" "%%A"
) Else (
  Move /Y "%%A-%%B\*" "%%A\"
  RmDir "%%A-%%B"
)
PopD
    
por 09.01.2017 / 12:38