Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] удалить файлы по маске *_i.ext

Ответить
Настройки темы
CMD/BAT - [решено] удалить файлы по маске *_i.ext

Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Здравствуйте!
помогите удалить файлы
пользователем задается например i1=2 i2=3
маска в виде "_i.Extension"
и батник должен удалить все файлы в папке с хвостиком от 2 до 3

Отправлено: 19:13, 03-01-2015

 

Аватара для yurfed

Ветеран


Сообщения: 20133
Благодарности: 3145

Профиль | Отправить PM | Цитировать


shadowbat, не совсем понятно что вам нужно.
Что такое i1=2 i2=3?
Какая операционка?
От имени администратора
del \путь к папке\*_*.txt
del \путь к папке\*_*.jpg
и так далее. Зачем огород городить. Всё легко и просто через bat, cmd.
Или так
del \путь к папке\file*_*.txt

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 21:13, 03-01-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


i1=2 i2=3 - задается в начале бат файла два значения. например одно значение "2", второе значение "3"
бат удаляет все файлы по маске *_i.extension, где i в цикле сменяется с "2" до "3" с шагом 1
например есть сто разных имён с хвостиками от _0 до _5 (в сумме 600 разных файлов). нужно удалить все файлы с хвостиками от 2 до 3, чтобы остались хвостики 0,1,4,5, неважно какое там расширение (в сумме из 600 останется 400 файлов)
похожий пример и показан на картинке в первом сообщении, в котором удаляются все файлы с хвостиками от "_2" до "_3"

операционка Windows...
del \путь к папке\*_*.txt слишком топорно перебирать все существующие расширения вручную
так можно дойти до
del \путь к папке\*_2.txt
del \путь к папке\*_2.jpg
del \путь к папке\*_2.doc
del \путь к папке\*_3.txt
del \путь к папке\*_3.jpg
del \путь к папке\*_3.doc
и еще сто похожих строк

Последний раз редактировалось shadowbat, 03-01-2015 в 21:34.


Отправлено: 21:23, 03-01-2015 | #3


Аватара для yurfed

Ветеран


Сообщения: 20133
Благодарности: 3145

Профиль | Отправить PM | Цитировать


Цитата shadowbat:
слишком топорно перебирать все существующие расширения вручную »
А звёздочку уже отменили *
Цитата shadowbat:
так можно дойти до »
А так в батник запихнуть две строчки не судьба?
Цитата:
del \путь к папке\*_2.*
del \путь к папке\*_3.*

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 21:52, 03-01-2015 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off& setlocal enableextensions

set /a i1=2,i2=3
set "mask=_i.*"

for /l %%i in (%i1% 1 %i2%) do cmd /v:on /c del "*!mask:i=%%i!"

endlocal& exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 03-01-2015 | #5


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата:
А так в батник запихнуть две строчки не судьба?
а если нужно удалить файлы с хвостиками от "2" до "30", то 29 строчек вписывать?
можно и вручную через поиск в експлорере ввести "_2." и удалить мышкой. зачем тогда тему создавать?

Georgio
спасибо огромное, все работает!

Отправлено: 21:57, 03-01-2015 | #6


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


а можно как то изменить, чтобы удалял не по маске *_i.*, а по маске *_i.extension ?

чтобы не удалял файлы типа file_1.file_0.jpg (если в i от 1 до 3, то он не должен этот файл удалять, а он удаляет)
то есть если такая маска попадется случайно в середине имени файла

Отправлено: 22:31, 03-01-2015 | #7


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off& setlocal enableextensions

set /a i1=2,i2=3
set "mask=_i.*"

for /l %%i in (%i1% 1 %i2%) do (
 for /f "delims=" %%j in ('
  cmd /v:on /c dir /a-d/b "*!mask:i=%%i!"^| findstr /rc:"%mask:i.=[0-9][0-9]*\.[^\.][^\.]%$"
 ') do del "%%j"
 )
 

endlocal& exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:21, 04-01-2015 | #8


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


спасибо
может я что то не так делаю или объясняю, но удалился файл, у которого в середине есть _2., хотя в конце _0

Последний раз редактировалось shadowbat, 04-01-2015 в 08:29.


Отправлено: 08:20, 04-01-2015 | #9


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


можно упростить и делать проверку просто на последний символ в имени файла
если он равен от 2 до 3 с шагом 1, то удалять файл
например если есть File1.jpg File2.txt File3.jpg, то удалить файлы File2.txt и File3.jpg
так наверное будет проще?

Последний раз редактировалось shadowbat, 04-01-2015 в 18:01.


Отправлено: 10:53, 04-01-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] удалить файлы по маске *_i.ext

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удалить папки по маске run0ut Скриптовые языки администрирования Windows 9 21-03-2017 01:27
CMD/BAT - удалить файлы по маске из каталога Gablik Скриптовые языки администрирования Windows 15 04-09-2012 16:23
.NET - Скачать файлы с ftp по маске. Sadhacker Программирование и базы данных 1 20-07-2012 21:23
Как удалить разделы в реестре по маске? TempUser AutoIt 0 14-05-2011 15:49
Удалить файлы в папке по маске Nealles Программирование и базы данных 4 10-09-2003 23:11




 
Переход