1

У меня есть папка, содержащая около 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 ответ1

0

Я хочу удалить все файлы, которые не являются файлами * -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.
  • dir - Показать список файлов и подпапок.
  • enabledelayedexpansion - отложенное расширение приведет к тому, что переменные будут расширяться во время выполнения, а не во время анализа.
  • for /f - Циклическая команда против результатов другой команды.
  • if - Условно выполнить команду.
  • set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .