|
Компьютерный форум 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 |
Ветеран Сообщения: 2721
|
Профиль | Отправить PM | Цитировать oniava,
Вот вариант для нескольких масок.
@Echo Off Set Mask="*.??-??.*cab" "*.??-??#*cab" Set "Exclude=.ru-RU. .en-GB. .en-US. .de-DE. .ru-RU# .en-GB# .en-US# .de-DE#" rem Set "BoxIn=%~dp0" Set "BoxIn=%userprofile%\Desktop\ElsaWin" Set "Log=%userprofile%\Desktop\%~nx0.log" If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%" Call :PushdLog "%Log%" >~Exclude.tmp (For %%e IN (%Exclude%) DO Echo %%e) Call :InMask %Mask% Del ~Exclude.tmp Popd GoTo :Eof :InMask >"%Log%" (For /F "usebackq delims=" %%f IN (`Xcopy "%BoxIn%\%~1" "%Tmp%" /Exclude:~Exclude.tmp /S /L 2^>nul`) DO ( If Exist "%%f" Echo Del "%%f" &Del /F "%%f" 2>&1 )) Shift If Not "%~1"=="" GoTo :InMask GoTo :Eof :PushdLog Pushd "%~dp1" GoTo :Eof |
------- Последний раз редактировалось megaloman, 07-10-2017 в 22:46. Отправлено: 22:39, 07-10-2017 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
Цитата megaloman:
:: Где ищем 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* *lt-LT* *lv-LV* *mk-MK* *nb-NO* *pt-BR* *sr-YU* *uk-UA* *zh-CHS* *bg-BG* *et-EE* *zh-TW* *zh-TW* *id-ID* *ms-MY* *nl-BE* *sr-SP* *zh-SG*" :: Что оставляем :: en-GB, en-US, de-DE, ru-RU 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 > %userprofile%\Desktop\loglist.txt for %%J in (".") do echo. & echo. - Удалено: %n% файлов & echo. & echo. - Из папки: %%~nJ echo. Pause Pause >NUL EndLocal Exit /B Языки меняются в папках и добавляются порой новые. Ладно, спасибо Вам megaloman БОЛЬШОЕ за помощь. Что нибудь придумаю. |
|||
Отправлено: 22:50, 07-10-2017 | #22 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Может кому пригодится.
Вот этот скрип полностью на 100%, справляется с поставленной задачей: @echo off SetLocal EnableExtensions chcp 866 >NUL Set "BoxIn=%~dp0" Set "Ext=*.??-*.cab" Set "Exclude=*ru-RU* *en-GB* *en-US* *de-DE*" Set "Log=%userprofile%\Desktop\%~nx0.log" pushd "%BoxIn%" || (pause & exit /b) del "%Log%" 2>NUL set nS=0& set /a nF=0 FOR /f "delims=" %%f IN ('dir /b /a-d %Exclude%') DO set ""%%~nxf"=1" FOR %%f IN ("%BoxIn%\%Ext%") DO if not Defined "%%~nxf" ( del /f /a "%BoxIn%\%%~nxf" &&(>>"%Log%" echo Удалено: "%%~nxf"& set /a nS+=1) ||(>>"%Log%" Не удалено: "%%~nxf" & set /a nF+=1) ) (echo Результат выполнения: echo Удалено файлов: %nS% echo Не удалено файлов: %nF% popd) >> "%Log%" type "%Log%" pause |
Отправлено: 00:03, 08-10-2017 | #23 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 11:42, 08-10-2017 | #24 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать oniava,
Цитата oniava:
вот это не может работать по вашему вывод так можно сделать @echo on ::1111.txt ::11a11.txt ::1b2.txt ::22c.txt ::d44.txt ::eee.txt set "Exclude=*a* *b* *c* *d*" set nS=0& set /a nF=0 for /f "delims=" %%f in ('dir /b /a-d %Exclude%') do set ""%%~nxf"=1" echo %"%%~nxf"% :& Должна существовать ТАКАЯ переменная? pause Вот так @echo on ::11aa234.txt ::b2345.txt ::cccc.txt setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /a-d/b *a*.txt *b*.txt') do ( set "%%~nxa=Exclude" if defined %%~nxa echo файл: "%%a" в исключение rem или if "!%%~nxa!"=="Exclude" echo файл: "%%a" в исключение ) pause Найдите отличия ![]() |
|
Последний раз редактировалось alpap, 08-10-2017 в 13:05. Отправлено: 12:36, 08-10-2017 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:24, 08-10-2017 | #26 |
Ветеран Сообщения: 1269
|
Профиль | Отправить PM | Цитировать Цитата oniava:
|
|
Отправлено: 10:11, 09-10-2017 | #27 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Цитата alpap:
|
|
Отправлено: 12:12, 12-10-2017 | #28 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать А если требуется удалить не по названию файла, а по части названия песни? Например удалить все файлы где присутствует "fsx" "DAL" "fr" "es" "it" "de" Вручную фильтровать 10К файлов это слишком долго. Может есть более быстрое решение?
Фото-пример
![]() |
Отправлено: 23:08, 31-07-2024 | #29 |
fascinating rhythm Сообщения: 6566
|
Профиль | Отправить PM | Цитировать Есть.
Powershell + ExifTool $exiftool = 'C:\scripts\exiftool.exe'
$dir = 'C:\Temp\folder_with_audiofiles'
$regex = 'fsx|DAL|fr|es|it|de'
cd $dir
(& $exiftool -s3 -filename -title -T . |ConvertFrom-Csv -Delimiter "`t" -Header "filename","title"|? title -CMatch $regex).filename |del -WhatIf
Значения в $regex чувствительны к регистру. |
------- Отправлено: 10:15, 01-08-2024 | #30 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла | 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 |
|