Execute o comando em arquivos não duplicados

0

Eu preciso escrever um arquivo de lote que executará um comando para arquivos com extensão .ext, excluindo os arquivos "duplicados" que tenham o mesmo nome de arquivo, mas duas extensões diferentes (por exemplo, .ext e .txe).

Eu tentei isso, mas não sei como excluir um arquivo com o mesmo nome do arquivo .txe encontrado:

@echo off 
forfiles /c "cmd /c if @ext==\"ext\" 
    if not @ext==\"txe\" 
     echo @fname.ext" 
pause 
    
por Koboos 17.03.2013 / 19:51

1 resposta

1

O script abaixo irá percorrer o diretório atual procurando arquivos que correspondam ao padrão *.ext . Para cada arquivo encontrado, ele executará o comando dir example.* (o modificador ~n retira a extensão %%i ). A saída deste comando dir é canalizada para findstr para obter a linha indicando o número de arquivos encontrados. for /F analisa essa linha e armazena o número em %%j .

Se forem encontrados arquivos "duplicados" com uma extensão diferente, esse número será maior que um. Se o número for um, estamos lidando com uma não-duplicata e podemos começar a executar comandos em %%i . Neste exemplo, o script simplesmente imprime o nome do arquivo usando echo %%i .

@echo off
for %%i in (*.ext) do (
    for /F %%j in ('dir %%~ni.* ^| findstr /C:"File(s)"') do (
        if /I %%j EQU 1 (
            echo %%i
        )
    )
)
    
por 17.03.2013 / 20:44