Lote movendo arquivos usando o nome do arquivo em uma pesquisa de pasta aninhada

0

Eu tenho uma infinidade de arquivos de legendas (.srt) que tenho em um diretório, digamos C: \ foo. Eu tenho uma coleção de arquivos de vídeo, organizados em uma infinidade de pastas (ou seja, pastas chamadas A, B, C, D, E, ... etc, que each tem um para muitos arquivos de vídeo). Gostaria de mover cada um dos arquivos .srt para a pasta que contém o arquivo de vídeo correspondente (baseado no nome do arquivo)?

Existe alguma maneira de realizar uma pesquisa de substring com base no nome de arquivo do .srt, onde ele pesquisará pela pasta do diretório raiz (a pasta raiz contendo pastas é nomeada com exclusividade A, B, C, D, E, etc) e procurar também todas as camadas de subdiretórios dentro desse? ou seja, todos os subdiretórios aninhados, para encontrar um nome de arquivo de vídeo 'correspondente'?

E a partir daí, se houver uma correspondência , moverá o arquivo .srt para a pasta em que o arquivo de vídeo está com a correspondência 'foi encontrado.

Suponho que seria semelhante a como os media players podem realizar uma pesquisa difusa e, portanto, mesmo que qualquer substring do nome da legenda corresponda ao vídeo, ela carregará a legenda)?

Agora, observando isso, eu obviamente não preciso de uma implementação de pesquisa fuzzy, porque felizmente meus nomes de arquivos são assim:

.srt filename: XXX _ abczxy .srt

Nome do arquivo de vídeo: XXX .mp4

onde XXX = uma string (na qual esta string é exatamente igual para o arquivo .srt e o arquivo de vídeo)

e

onde abcxyz = alguma string única e aleatória

Obrigado

Até agora eu escrevi:

@ECHO OFF
SET "SEARCH_IN_DIR=%USERPROFILE%\Desktop\foo\"
SET "DEST_DIR=%USERPROFILE%\Desktop\RootFolder"

REM: Enter recursive search, display lists of files to be copied, copy from the source to the dest:
FOR /R "%SEARCH_IN_DIR%" %%f IN (%%a) (
    IF EXIST %%f (
    DO (
        xcopy /I "%%~f" "%DEST_DIR%" 2> NUL
    ) 
    ELSE (
        echo
    )
)
    
por intangibleAssets 04.09.2017 / 16:22

0 respostas