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.