|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением |
|
|
CMD/BAT - Удаление файлов в каталоге и подкаталогах с маской-исключением
|
Новый участник Сообщения: 14 |
Господа, прошу помощи, есть каталог с подкаталогами, в которых файлы jpg с именами *.jpg и *_1.jpg. Нужен скрипт, который удалит только файлы с названием типа *.jpg . И перед удалением вывел предупреждение, в каком каталоге и сколько файлов удалится y\n, если это возможно
|
|
Отправлено: 10:26, 12-03-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:42, 12-03-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Iska, Я так понимаю - нужно:
Если (filename(последние 4 символа в имени файла)==.jpg)&&(filename(последние 6 символов в имени файла)!=_1.jpg) То Файл удалить Автор, уточните, если не так. |
Отправлено: 13:30, 12-03-2017 | #3 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Да, извините, ошибся в первом посте. В общем есть файлы [filename]_1.jpg и [filename].jpg
Нужно оставить только [filename]_1.jpg, остальные удалить. Конкретный пример: IMG_0018.jpg - удалить, IMG_0018_1.jpg - оставить По поводу сообщения перед удалением, можно ли сделать хотя бы так, чтобы перед удалением был запрос y/n или что-то вроде этого. Скрипт будет кнопкой в totalcmd, и таким образом хочу обезопаситься от случайного сноса нужных jpg'ов если находясь в другой папке (которую чистить не планирую) запущу скрипт. |
Последний раз редактировалось Fafus, 12-03-2017 в 15:50. Отправлено: 15:44, 12-03-2017 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Если удалить все файлы *.jpg кроме *_1.jpg
Если удалить все файлы filename.jpg, а filename_1.jpg оставить
@Echo Off cls Set "BoxIn=Z:\Temp" Set "Mask=.jpg" Set "MaskEx=_1.jpg" Set "Exclude=~EXCLUDE.tmp" Echo %MaskEx%>"%EXCLUDE%" FOR /F "usebackq delims=" %%f IN (`XCOPY "%BoxIn%\*%Mask%" /L /S /EXCLUDE:%Exclude% 2^>nul`) DO ( If /I "%%~xf"=="%Mask%" If Exist "%%~dpnf%MaskEx%" Del /P "%%f" ) Del "%EXCLUDE%" pause GoTo :Eof На каждое удаление выдаётся запрос. Имя папки с файлами надо указать, у меня это Set "BoxIn=Z:\Temp" |
|
------- Отправлено: 15:59, 12-03-2017 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Вот вариант: генерируется батник, в котором собраны команды Del для удаления необходимых файлов. Далее можно этот файл просмотреть, если надо, корректировать и запустить на выполнение, чтобы необходимые файлы были удалены.
@Echo Off cls Set "BoxIn=Z:\Temp" Set "Mask=.jpg" Set "MaskEx=_1.jpg" Set "Exclude=~EXCLUDE.tmp" Set "ExcludeBat=%~dp0%~n0.~EXCLUDE%~x0" Echo %MaskEx%>"%EXCLUDE%" >"%ExcludeBat%" Echo @Echo Off >>"%ExcludeBat%" (FOR /F "usebackq delims=" %%f IN (`XCOPY "%BoxIn%\*%Mask%" /L /S /EXCLUDE:%Exclude% 2^>nul`) DO ( Set "DCount=%%f" If /I "%%~xf"=="%Mask%" If Exist "%%~dpnf%MaskEx%" echo Del /P "%%f" ) ) Del "%EXCLUDE%" >>"%ExcludeBat%" echo rem %DCount% more "%ExcludeBat%" Echo Создан файл "%ExcludeBat%" pause rem Call "%ExcludeBat%" GoTo :Eof |
------- Отправлено: 17:10, 12-03-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Fafus:
ищете, результаты выводите на панель, убеждаетесь, что найдено именно то, что нужно, и ничего лишнего, затем выделяете и удаляете. Это будет на порядок быстрее, нежели на каждый подобный чих лепить отдельный пакетный файл или скрипт. |
|
Отправлено: 19:05, 12-03-2017 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Fafus, Забыл спросить: конкретная пара filename.jpg и filename_1.jpg находятся в одной папке? Мои решения работают в этом предположении. Если в разных папках, то возможная реализация будет работать намного медленнее.
|
------- Отправлено: 20:05, 12-03-2017 | #8 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Fafus Еще вариант: @echo off set "d=papka" set "r=jpg" echo Следующие файлы будут удалены:& echo: for /f "delims=" %%a in ('2^>nul dir /a-d/b "%d%\*.%r%"^|findstr /rvc:"^[^_][^_]*_[0-9][0-9]*\.%r%$"') do set /a m+=1& echo %%a& set "$_%%a=%%a" echo Всего файлов будет удалено: %m% штук& echo:& set /p "v=Сделайте выбор (удалять=y,не удалять=n): "& echo: if %v%==y (echo Удаляем:& for /f "tokens=2 delims==" %%a in ('set $_') do echo del "%d%\%%a")&: Убрать echo перед del, если все устраивает if %v%==n echo Операция отложена& echo: pause |
|
Отправлено: 02:31, 13-03-2017 | #9 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Всем спасибо, скрипты забрал
![]() |
Отправлено: 07:24, 13-03-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление определенных подпапок и файлов в каталоге | Stalker_AleX333 | Скриптовые языки администрирования Windows | 11 | 28-02-2017 23:51 | |
PowerShell - удаление папок за исключением определнных | chek | Скриптовые языки администрирования Windows | 3 | 26-05-2016 10:10 | |
CMD/BAT - [решено] Список файлов в каталоге и подкаталогах | foma24 | Скриптовые языки администрирования Windows | 8 | 22-12-2013 19:58 | |
CMD/BAT - [решено] Удаление файлов по маске в подкаталогах с одинаковыми именами. | Xarien | Скриптовые языки администрирования Windows | 2 | 24-06-2013 14:52 | |
CMD/BAT - [решено] Удаление одинаковых файлов в подкаталогах | njg | Скриптовые языки администрирования Windows | 1 | 18-11-2011 04:29 |
|