|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нужен bat-ник для поиска и удаления файлов и папок по части названия файла |
|
|
CMD/BAT - Нужен bat-ник для поиска и удаления файлов и папок по части названия файла
|
Новый участник Сообщения: 21 |
Здравствуйте.
Нужен bat-ник для поиска и удаления файлов и папок по части названия файла. Подробнее: Есть папка к примеру E:\VW\6.Base_02.2015 (до 40 Гб файл) В ней куча файлов Скрытый текст
![]() Задача: Удалить из этой папки файлы которые содержат в названии символы "fr, da, it, es" ну и типа такого. Одним словом, мне нужно оставить файлы с языками это: ru-RU - русский, en-GB - английский (Великобритания), en-US - английский (США), de-DE - немецкий. С другими языками файлы удалить. Что то, найти в сети не могу что нибудь подобное... |
|
Отправлено: 17:11, 06-10-2017 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Поиск файлов которые мне не нужны, реализовал для пробы таким образом:
where /R E:\VW\6.Base_02.2015 *cs-CZ* *da-DK* *el-GR* *es-ES* *fi-FI* *fr-CA* *fr-FR* *hr-HR* *hu-HU* *it-IT* *ja-JP* *ko-KR* *nl-NL* *pl-PL* *pt-PT* *ro-RO* *sk-SK* *sl-SI* *sv-SE* *th-TH* *tr-TR* *zh-CN* *zh-TW* > %userprofile%\Desktop\loglist.txt Ищет команда правильно и все файлы какие надо. Как совместить поиск с удалением найденного? |
Отправлено: 18:02, 06-10-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2721
|
Профиль | Отправить PM | Цитировать oniava, В папке Z:\Box_In\Manual (пропишите свой путь) для файлов по маске *.??-?? удалятся все файлы, кроме файлов с расширениями ru-RU en-GB en-US de-DE
Нет проблем добавить лог, если нужен.
|
------- Последний раз редактировалось megaloman, 07-10-2017 в 00:28. Причина: Исправил замеченную Iska описку в комментарии Отправлено: 19:45, 06-10-2017 | #3 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать ![]() ![]() Цитата megaloman:
Думаю сделать так: Батник закидываем в папку с файлами и оттуда запускаем. @Echo off SetLocal EnableExtensions chcp 866 >NUL cd /d "%~dp0" set mask="*cs-CZ* *da-DK* *el-GR* *es-ES* *fi-FI* *fr-CA* *fr-FR* *hr-HR* *hu-HU* *it-IT* *ja-JP* *ko-KR* *nl-NL* *pl-PL* *pt-PT* *ro-RO* *sk-SK* *sl-SI* *sv-SE* *th-TH* *tr-TR* *zh-CN* *zh-TW*" 2>NUL (for /f "delims=" %%A in ('"dir /b /a:-d "%mask%""') do ( set /a n+=1 )) if "%n%" LSS "1" echo. & echo. & echo. - Заданных файлов не найдено .. & echo. & echo. - Нажмите любую клавишу для выхода .. & Pause >NUL & goto :EOF del /f /a /q /S "%mask%" 2>NUL 1>&2 for %%J in (".") do echo. & echo. - Удалено: %n% файлов & echo. & echo. - Из папки: %%~nJ Pause >NUL EndLocal Exit /B ![]() |
|
Последний раз редактировалось oniava, 06-10-2017 в 21:06. Отправлено: 20:47, 06-10-2017 | #4 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
--------------------------------------------------------------------------------------------------- Папка ElsaWin и батник ElsaWin_Delit - копия.bat лежат на рабочем столе. @echo off Set "Exclude=ru-RU en-GB en-US de-DE" Set "BoxIn=%userprofile%\Desktop\ElsaWin" Set "Mask=*..??-??" FOR %%f IN ("%BoxIn%\%Mask%") DO Call :DelLan "%%f" "%%~xf" GoTo :Eof :DelLan FOR %%e IN (%Exclude%) DO If /I "%~2"==".%%e" GoTo :Eof Del %1% > GoTo :Eof При запуске вашего кода, с папкой ElsaWin ничего не происходит! Ваш код megaloman нечего не делает почему то! |
||
Последний раз редактировалось oniava, 06-10-2017 в 22:55. Отправлено: 21:52, 06-10-2017 | #5 |
Ветеран Сообщения: 2721
|
Профиль | Отправить PM | Цитировать oniava, Выполните в командном окне
dir "%userprofile%\Desktop\ElsaWin" Там есть файлы? У меня, например, рабочий стол хранится в другом месте. Подозреваю, у Вас тоже, поэтому ничего не происходит. И вообще, плохая идея экспериментировать с удалением файлов на рабочем столе, это опасно. Создайте папочку где-нибудь на диске в другом месте. Для проверки поместите батник внутрь папки ElsaWin, которая у Вас на рабочем столе, и пропишите Set "BoxIn=%~dp0" Кроме того, я делал удаление только в указанной папке, подпапки не просматривал. Вот вариант, который для папки и всех её подпапок для файлов по маске *.??-?? удаляет все файлы, кроме файлов с расширениями ru-RU en-GB en-US de-DE
@Echo Off Set "Exclude=ru-RU en-GB en-US de-DE" Set "BoxIn=%~dp0" rem Set "BoxIn=%userprofile%\Desktop\ElsaWin" Set "Mask=*.??-??" FOR /R "%BoxIn%" %%f IN ("%Mask%") DO Call :DelLan "%%f" "%%~xf" GoTo :Eof :DelLan FOR %%e IN (%Exclude%) DO If /I "%~2"==".%%e" GoTo :Eof Echo Del %1 Del %1 GoTo :Eof Кроме того, я уточнил маску файлов: вместо *..??-?? надо *.??-?? |
------- Последний раз редактировалось megaloman, 07-10-2017 в 00:27. Отправлено: 00:12, 07-10-2017 | #6 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Скрытый текст
![]() У меня рабочий стол именно здесь Цитата megaloman:
@Echo Off Set "Exclude=ru-RU en-GB en-US de-DE" Set "BoxIn=%~dp0" rem Set "BoxIn=%userprofile%\Desktop\ElsaWin" Set "Mask=*..??-??" FOR /R "%BoxIn%" %%f IN ("%Mask%") DO Call :DelLan "%%f" "%%~xf" GoTo :Eof :DelLan FOR %%e IN (%Exclude%) DO If /I "%~2"==".%%e" GoTo :Eof Echo Del %1 Del %1 GoTo :Eof |
||
Последний раз редактировалось oniava, 07-10-2017 в 23:55. Отправлено: 00:24, 07-10-2017 | #7 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Лог желательно на рабочий стол, что удали то хоть знать. |
|
Отправлено: 00:48, 07-10-2017 | #8 |
Ветеран Сообщения: 2721
|
Профиль | Отправить PM | Цитировать oniava, Всё ясно, у Вас файлы с маской *.??-??.cab, а я делал для *.??-??. Необходима доработка.
Для папки без подпапок
@Echo Off Set "Exclude=ru-RU en-GB en-US de-DE" rem Set "BoxIn=%~dp0" Set "BoxIn=%userprofile%\Desktop\ElsaWin" Set "Mask=*.??-??.cab" Set "Log=%userprofile%\Desktop\%~nx0.log" >"%Log%" (FOR %%f IN ("%BoxIn%\%Mask%") DO Call :DelLan "%%f" "%%~nf") GoTo :Eof :DelLan FOR %%e IN (%Exclude%) DO If /I "%~x2"==".%%e" GoTo :Eof Echo Del %1 Del /F %1 2>&1 GoTo :Eof Для папки с подпапками
@Echo Off Set "Exclude=ru-RU en-GB en-US de-DE" rem Set "BoxIn=%~dp0" Set "BoxIn=%userprofile%\Desktop\ElsaWin" Set "Mask=*.??-??.cab" Set "Log=%userprofile%\Desktop\%~nx0.log" >"%Log%" (FOR /R "%BoxIn%" %%f IN ("%Mask%") DO Call :DelLan "%%f" "%%~nf") GoTo :Eof :DelLan FOR %%e IN (%Exclude%) DO If /I "%~x2"==".%%e" GoTo :Eof Echo Del %1 Del /F %1 2>&1 GoTo :Eof |
------- Последний раз редактировалось megaloman, 07-10-2017 в 14:49. Отправлено: 01:18, 07-10-2017 | #9 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Закинул в папку с файлами этот батник.
Цитата megaloman:
Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.cs-CZ.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.da-DK.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.el-GR.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.es-ES.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.fi-FI.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.fr-FR.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.hr-HR.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.hu-HU.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.it-IT.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.ja-JP.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.nl-NL.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.pl-PL.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.pt-PT.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.ro-RO.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.sk-SK.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.sl-SI.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.sv-SE.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.N.tr-TR.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.V.cs-CZ.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.V.da-DK.cab" Del "C:\Users\Oleg\Desktop\ElsaWin\au.V.el-GR.cab" и т.д. Второй код в батнике, вообще ничего не сделал и лог выдал пустой. Попробовал в разных кодировках ваш код в батника сохранять, но не в 866, не 1251 не работает ваш код... |
|
Отправлено: 01:34, 07-10-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла | santey007 | Скриптовые языки администрирования Windows | 19 | 22-12-2015 10:43 | |
CMD/BAT - [решено] Нужен bat-ник для поиска и удаления файлов и папок по маске | Nun-Nun | Скриптовые языки администрирования Windows | 14 | 08-11-2014 09:53 | |
CMD/BAT - Создать bat'ник для автоматической очистки папок временных файлов каждые 2 часа | THEDOGG | Скриптовые языки администрирования Windows | 5 | 05-03-2013 18:39 | |
CMD/BAT - [решено] Очень нужен Bat-ник, копирующий всю структуру папок и файлов, чтоб каждый файл занима | GoldenSuslik2 | Скриптовые языки администрирования Windows | 7 | 13-06-2011 15:17 |
|