Apagar tudo com exceções do comando

1

Eu tenho uma pasta com cerca de 50 arquivos diferentes (NAME1.jpg, NAME2.jpg, NAME3.jpg ...).

Eu tenho um programa que é executado, e divide cada arquivo em cerca de 4 arquivos diferentes e renomeia-os (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg .. .)

Eu quero criar um arquivo .bat que execute e exclua todos os arquivos que não são os arquivos * -0.jpg.

Até agora, o mais próximo que cheguei é a linha:

for %i in (*) do if not %i == "*.jpg" del "%i"

mas isso apenas vai e apaga todos os arquivos da pasta, incluindo o -0.jpg que eu quero salvar.

há uma linha melhor para usar?

    
por Rin 08.12.2015 / 19:02

1 resposta

0

Eu quero excluir todos os arquivos que não são os arquivos * -0.jpg.

I have a program that runs, and splits each file into about 4 different files and re-names them (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...)

Use o seguinte arquivo de lote (test.cmd):

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b NAME?-?.jpg') do (
  rem get file name
  set _fname=%%~ni
  rem get last 2 characters of file name
  set _last2=!_fname:~-2!
  if [!_last2!] NEQ [-0] del "%%i"
  )

Exemplo:

F:\test>dir *.jpg
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

08/12/2015  23:51                 0 NAME1-0.jpg
08/12/2015  23:51                 0 NAME1-1.jpg
08/12/2015  23:51                 0 NAME2-0.jpg
08/12/2015  23:51                 0 NAME2-1.jpg
               4 File(s)              0 bytes
               0 Dir(s)  1,776,919,613,440 bytes free

F:\test>test
F:\test>dir *.jpg
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

08/12/2015  23:51                 0 NAME1-0.jpg
08/12/2015  23:51                 0 NAME2-0.jpg
               2 File(s)              0 bytes
               0 Dir(s)  1,776,919,613,440 bytes free

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • dir - Exibe uma lista de arquivos e subpastas.
  • enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
  • para / f - Comando Loop contra os resultados de outro comando.
  • if - Realize condicionalmente um comando.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
por 09.12.2015 / 01:09