Nomeie dinamicamente os arquivos em um prompt de comando para loop

1

Eu tenho um script em lote que usa um loop for para percorrer arquivos no diretório atual e, em seguida, convertê-los para o mp4 com ffmpeg no diretório pai. Basicamente eu apenas copio todos os arquivos que eu quero converter em um diretório chamado "avi" (o subdiretório) e executo o script .bat. O problema é que tenho alguns arquivos no diretório pai. Quando eu crio novos arquivos avi, eles são chamados de "capture - #. Avi", onde # é um número que começa com 1. Os arquivos convertidos usam o mesmo esquema de nomes, mas são sequenciais. Toda vez que eu crio um novo conjunto de arquivos avi, o # inicia de volta em 1, então quando eu os copio no diretório avi e executo o script em lote, ele tenta sobrescrever os arquivos mp4 existentes no diretório pai. Existe uma maneira de fazer o script em lote obter o nome do arquivo mais recente (número de captura mais alto) do diretório pai e usá-lo para nomear dinamicamente os arquivos de saída, para que não importe o nome do arquivo avi? , quando for convertido, ele sairá como "capture - #. mp4", com os números continuando a partir do que existe no diretório pai?

Por exemplo, no diretório pai, eu tenho 30 arquivos, o mais recente deles é obviamente, "capture-30mp4". Eu copio dois arquivos avi para o diretório avi, chamado "capture-1.avi" e "capture-2.avi", posso fazê-lo para que o script em lote olha no diretório pai e veja o arquivo capture-30.mp4 e renomeia os arquivos avi (como eles são convertidos) para capturar-31.mp4 e capture-32.mp4 automaticamente?

Eu tentei fazer isso:

for %I in (../*.mp4) do SET _file=%I

Mas a variável _file foi definida como capture_9.mp4, presumivelmente porque o sistema de ordenação não é uma ordenação natural, então considera 9 ser maior que 30 (porque 9 > 3). Eu tentei enrolar todo o loop for entre parênteses e adicionando | ordenar no final, mas isso não mudou nada.

    
por HaLo2FrEeEk 19.02.2012 / 19:55

1 resposta

0

Eu usaria algum arquivo de cache que contém o último número convertido. Ao executar o script, ele lê esse número e o usa como índice. Em loop, você também deve verificar se o nome do arquivo no diretório pai existe. Enquanto isso é assim - tente adicionar 1 ao contador. Depois de terminar o loop, salve o índice no arquivo para uso posterior.

    
por 28.02.2012 / 14:35