У меня есть папка, в которой находится около 50 различных файлов (NAME1.jpg, NAME2.jpg, NAME3.jpg...).
У меня есть программа, которая запускается, разбивает каждый файл примерно на 4 разных файла и переименовывает их (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...)
Я хочу создать .bat-файл, который будет запускаться и удалять все файлы, кроме *-0.jpg.
Пока что самое близкое, что мне удалось найти, это строка:
for %i in (*) do if not %i == "*.jpg" del "%i"
но это просто удаляет все файлы в папке, включая -0.jpg, которые я хочу сохранить.
есть ли более подходящая линия?
решение1
Я хочу удалить все файлы, кроме *-0.jpg.
У меня есть программа, которая запускается, разбивает каждый файл примерно на 4 разных файла и переименовывает их (NAME1-0.jpg, NAME1-1.jpg, NAME2-0.jpg, NAME2-1.jpg...)
Используйте следующий пакетный файл (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"
)
Пример:
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
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- реж- Отображение списка файлов и подпапок.
- включеноотложенное расширение- Отложенное расширение приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа.
- для /ф- Циклическая команда по результатам другой команды.
- если- Условно выполнить команду.
- набор- Отображение, установка или удаление переменных среды CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.