lote move para diferentes tipos de arquivos para o nome da pasta diferente

0

Eu tenho arquivos contendo em

C: \ foldername1 \ Files \ soandso1.mkv C: \ foldername2 \ Files \ soandso2.mp4 C: \ foldername3 \ Files \ soandso3.avi

Eu quero mover o .mkv, .mp4 e .avi de volta para sua pasta pai, que é foldername1, 2, 3.

o nome da pasta será diferente para cada arquivo no qual ele está. Basicamente, eu quero me livrar da pasta "Arquivos" e colocar os arquivos de mídia em foldername1, 2 e 3.

Existe um comando em lote para isso?

    
por Roger 02.02.2013 / 02:29

1 resposta

1

Algo que eu juntei rapidamente; não há tempo para testar extensivamente agora:

@echo off
for /f "delims=" %%d in ('dir /b/ad-s-h') do (
    if exist "%%d\Files" (
        pushd "%%d\Files"
        if exist *.avi move *.avi ..
        if exist *.mkv move *.mkv ..
        if exist *.mp4 move *.mp4 ..
        popd
        rd "%%d\Files"
    )
)

Se você executá-lo em C: \, ele examinará cada pasta de nível superior da unidade e, se ela contiver uma subpasta Arquivos , moverá qualquer AVI / MKV / MP4 arquivos encontrados em um nível (ou seja, na pasta de nível superior) e, em seguida, exclua a subpasta Arquivos .

Se algum outro arquivo existir em Arquivos , a pasta não será excluída. Você pode usar rd /s /q se quiser excluir forçadamente. Além disso, o movimento solicitará a você cada vez que sobrescreva duplicatas (se houver), o que pode ser feito automaticamente usando move /y .

    
por 02.02.2013 / 03:38