Como apagar nomes de arquivos com nomes parciais semelhantes?

1

Eu tenho um monte de nomes de arquivos que são timestamped (até os nanossegundos) e eu só quero manter um arquivo por segundo. Por exemplo, aqui estão alguns nomes de arquivos:

11-14-29-033.jpg

(o que significa que o arquivo foi gravado na 11ª hora, 14º minuto, 29º segundo e 33º nanossegundo).

11-14-29-602.jpg
11-14-29-839.jpg
11-14-29-953.jpg
11-14-30-406.jpg
11-14-30-847.jpg
11-14-31-091.jpg
11-14-31-419.jpg
11-14-31-667.jpg
11-14-32-364.jpg
11-14-32-619.jpg
11-14-32-913.jpg
11-14-33-150.jpg
11-14-33-485.jpg
11-14-33-708.jpg
11-14-34-052.jpg
11-14-34-336.jpg
11-14-35-174.jpg
11-14-36-563.jpg
11-14-36-788.jpg
11-14-37-278.jpg
11-14-37-584.jpg
11-14-38-050.jpg
11-14-38-841.jpg
11-14-39-196.jpg
11-14-39-736.jpg
11-14-39-870.jpg
11-14-40-091.jpg
11-14-40-766.jpg
11-14-41-052.jpg
11-14-41-676.jpg

Existe uma maneira que eu posso escrever um arquivo em lotes (no Windows) para remover todos, mas um arquivo por segundo?

    
por Hayley 06.02.2018 / 14:39

1 resposta

2

Isso deve fazer o trabalho:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET "source=C:\adjust\path"

FOR /R "%source%" %%F IN ("??-??-??-???.jpg") DO (
    SET "file_name=%%~nF"
    SET "file_name=!file_name:~0,-4!"
    REN "%%F" "!file_name!%%~xF" >nul 2>&1
)

FOR /R "%source%" %%G IN ("??-??-??-???.jpg") DO (
    DEL "%%G"
)

ECHO Done^^!
PAUSE

Esse FOR /R loop renomeará cada arquivo .jpg de HH-MM-SS-MMM para HH-MM-SS simplesmente removendo os últimos 4 caracteres, a menos que o nome do arquivo já exista. O comando REN não renomeará o arquivo e ele será deletado depois.

    
por 07.02.2018 / 01:37