Exclua tudo com exceções do comando

Exclua tudo com exceções do comando

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 os renomeia (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...)

Quero criar um arquivo .bat que será executado e excluirá todos os arquivos que não sejam *-0.jpg.

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

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

mas isso simplesmente exclui todos os arquivos da pasta, incluindo os -0.jpg que desejo salvar.

existe uma linha melhor para usar?

Responder1

Quero excluir todos os arquivos que não sejam *-0.jpg.

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

Use o seguinte arquivo em 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 AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
  • diretório- Exibir uma lista de arquivos e subpastas.
  • habilitadodelayedexpansion- A expansão atrasada fará com que as variáveis ​​sejam expandidas no tempo de execução, e não no tempo de análise.
  • para /f- Comando de loop em relação aos resultados de outro comando.
  • se- Execute um comando condicionalmente.
  • definir- Exibir, definir ou remover variáveis ​​de ambiente CMD. As alterações feitas com SET permanecerão apenas durante a sessão CMD atual.

informação relacionada