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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нужен bat-ник для поиска и удаления файлов и папок по части названия файла

Ответить
Настройки темы
CMD/BAT - Нужен bat-ник для поиска и удаления файлов и папок по части названия файла

Новый участник


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

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


Изменения
Автор: oniava
Дата: 07-10-2017
Здравствуйте.

Нужен 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
Благодарности: 0

Профиль | Отправить 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



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

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


Ветеран


Contributor


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

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


oniava, В папке Z:\Box_In\Manual (пропишите свой путь) для файлов по маске *.??-?? удалятся все файлы, кроме файлов с расширениями ru-RU en-GB en-US de-DE
Код: Выделить весь код
@Echo Off

Set "Exclude=ru-RU en-GB en-US de-DE"
Set "BoxIn=Z:\Box_In\Manual"
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
Нет проблем добавить лог, если нужен.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-10-2017 в 00:28. Причина: Исправил замеченную Iska описку в комментарии


Отправлено: 19:45, 06-10-2017 | #3


Новый участник


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

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


Цитата megaloman:
В папке Z:\Box_In\Manual (пропишите свой путь) для файлов по маске *..??-?? удалятся все файлы, кроме файлов с расширениями ru-RU en-GB en-US de-DE »
Все удалять нельзя, в папке есть файлы и без имени языка...

Думаю сделать так:

Батник закидываем в папку с файлами и оттуда запускаем.

Код: Выделить весь код
@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
Благодарности: 0

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


Цитата megaloman:
У меня выбираются только файлы, где в расширении есть имя языка (маска работает!). Остальные не рассматриваем и не покушаемся удалять. »
Если Ваш код 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_Delit - копия.bat

При запуске вашего кода, с папкой ElsaWin ничего не происходит!

Ваш код megaloman нечего не делает почему то!

Последний раз редактировалось oniava, 06-10-2017 в 22:55.


Отправлено: 21:52, 06-10-2017 | #5


Ветеран


Contributor


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

Профиль | Отправить 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
Благодарности: 0

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


Цитата megaloman:
oniava, Выполните в командном окне
dir "%userprofile%\Desktop\ElsaWin"
Там есть файлы? У меня, например, рабочий стол хранится в другом месте. Подозреваю, у Вас тоже, поэтому ничего не происходит. »
Скрытый текст


У меня рабочий стол именно здесь
Код: Выделить весь код
%userprofile%\Desktop\ElsaWin
Цитата megaloman:
Для проверки поместите батник внутрь папки ElsaWin, которая у Вас на рабочем столе »
Поместил в папку батник с этим кодом:
Код: Выделить весь код
@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
Благодарности: 0

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


Цитата megaloman:
Всё ясно, у Вас файлы с маской *.??-??.cab, а я делал для *.??-??. Необходима доработка. »
Ну так то да, я что то упустил и не сказал про расширение файлов.
Лог желательно на рабочий стол, что удали то хоть знать.

Отправлено: 00:48, 07-10-2017 | #8


Ветеран


Contributor


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

Профиль | Отправить 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
Благодарности: 0

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


Закинул в папку с файлами этот батник.

Цитата megaloman:
Код:
@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 %1
GoTo :Eof »
Он ничего не удалил но лог выдал такой:

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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Нужен bat-ник для поиска и удаления файлов и папок по части названия файла

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла 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




 
Переход