Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/37: Рейтинг темы: голосов - 37, средняя оценка - 4.59
тыжПрограммист
 Аватар для LonerZzz
330 / 144 / 44
Регистрация: 21.04.2014
Сообщений: 638

Поиск по расширенной маске

02.10.2014, 23:23. Показов 7885. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужны примеры расширенного использования маски в BAT файлах.
К примеру:
Только цифры в названии, не больше 3 цифр в названии..и различные их комбинации
например
5 цифр и одна буква..Просмотрел кучу примеров на форуме...обычно *.*,*.xxx и прочие используют..
А по-блатнее примеров не нашёл..хотя может и плохо ищу
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2014, 23:23
Ответы с готовыми решениями:

Поиск каталога по маске
Доброго времени суток! Необходима помощь в написании и понимании следующего функционала батника: Есть папка со структурой...

Поиск и удаление файлов по маске
Помогите пожалуйста. Задача такая: найти файлы по маске (в каталоге, в котором лежит bat-файл), удалить их и вывести сообщение типа...

Поиск по маске, копирование, переименование
Доброго времени суток Уважаемые. Я уже видел похожую тему, https://www.cyberforum.ru/cmd-bat/thread356961.html, но как посоветовал...

13
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
02.10.2014, 23:56
LonerZzz, регулярные выражения. (почитать)

Использованы могут быть в качестве фильтра при использовании findstr.

Добавлено через 1 минуту
Цитата Сообщение от LonerZzz Посмотреть сообщение
Только цифры в названии
Bash
1
dir /b | findstr /R ^\d*$
Если не ошибаюсь, винды под рукой нет.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2014, 00:11
FraidZZ, нет, конечно. Там максимум - это диапазон чаров.

Цитата Сообщение от LonerZzz Посмотреть сообщение
5 цифр и одна буква.
Bash
1
dir /b | findstr /RC:"^[0-9][0-9][0-9][0-9][0-9][^0-9]$"
Добавлено через 44 секунды
Цитата Сообщение от LonerZzz Посмотреть сообщение
примеры расширенного использования маски в BAT файлах.
Таких масок нет. Есть только ? * и очень урезанное подобие регулярных выражений.

Добавлено через 1 минуту
Еще примеры:
Вывод на экран списка файлов, созданных во втором полугодии
Записать список всех файлов из каталога К, имена которых заканчиваются на цифру, в файл F
1
тыжПрограммист
 Аватар для LonerZzz
330 / 144 / 44
Регистрация: 21.04.2014
Сообщений: 638
03.10.2014, 00:14  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
dir /b | findstr /RC:"^[0-9][0-9][0-9][0-9][0-9][^0-9]$"
а в случае с таким названием файла 1234b5 подойдёт?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2014, 00:18
Вы можете сами проверить :

Bash
1
echo 1234b5| findstr /RC:"^[0-9][0-9][0-9][0-9][0-9][^0-9]$"
1
тыжПрограммист
 Аватар для LonerZzz
330 / 144 / 44
Регистрация: 21.04.2014
Сообщений: 638
03.10.2014, 00:24  [ТС]
Если можете, то помогите с этим
Перемещение файлов, в имении которых содержится больше трех знаков препинания, в другой подкаталог.

Меня интересует сам факт "больше трех знаков препинания"
Я сделал с парсингом строки но код выглядит убого..Если можете - подскажите...а там сам разберусь
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2014, 00:35
Цитата Сообщение от LonerZzz Посмотреть сообщение
Я сделал с парсингом строки но код выглядит убого..
Покажите...

Регуляркой тут не обойтись.
Можно так: записать длину строки.
Сделать замены всех знаков препинания на ничто.
Снова посчитать длину строки.
Посчитать разницу между первой и второй.

Еще 1 вариант:
Пройтись по каждому символу строки и сравнивать со знаком препинания, делая подсчет.
0
тыжПрограммист
 Аватар для LonerZzz
330 / 144 / 44
Регистрация: 21.04.2014
Сообщений: 638
03.10.2014, 00:41  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Пройтись по каждому символу строки и сравнивать со знаком препинания, делая подсчет.
Bash
1
2
3
4
5
6
7
я так и делал
for /l **j in (0,1,255) do (
set "literal=!file_name:~%%j,1!"
if "!literal!"=="," set a/ count=count+1
......................
......................
)
потом проверка на количество и собственно само перемещение..Я думал как-нибудь короче можно сделать
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2014, 01:02
Можно забросить знаки препинания тоже в цикл.
Я бы так сделал.
Код не проверял:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
SetLocal EnableExtensions
 
set MAX_PATH=260
 
for %%a in (*) do call :#1 "%%~a"
goto :eof
 
:#1
set count=0
set "file=%~1"
for /L %%J in (0,1,%MAX_PATH%) do if "%file:~%%J,1"=="" (goto #1_exit) else (call :#2 "%file:~%%J,1")
:#1_exit
if %count% GTR 3 move "%~1" "new\"
exit /B
 
:#2
for %%c in ("," ";" "." "(" ")" "!" "?") do if "%~1"=="%%~c" set /a count+=1
1
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
03.10.2014, 20:32
Цитата Сообщение от Dragokas Посмотреть сообщение
Можно так: записать длину строки.
Сделать замены всех знаков препинания на ничто.
Снова посчитать длину строки.
Посчитать разницу между первой и второй.
Я, вроде, приводил когда-то пример проверки - можно обойтись и без подсчёта длины, делаем замену (удаление), а потом сравниваем строки, если разные, значит символы были.

Цитата Сообщение от LonerZzz Посмотреть сообщение
Перемещение файлов, в имении которых содержится больше трех знаков препинания, в другой подкаталог.
Имхо, типичная задача для моей новой утилиты xforfiles. Прям как под этот случай писал
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2014, 20:44
Цитата Сообщение от Smitis Посмотреть сообщение
Я, вроде, приводил когда-то пример проверки - можно обойтись и без подсчёта длины, делаем замену (удаление), а потом сравниваем строки, если разные, значит символы были.
Задача то не просто, проверить наличие знака.
Цитата Сообщение от LonerZzz Посмотреть сообщение
не больше 3 цифр в названии
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
03.10.2014, 20:57
Если так парит, то регулярные выражения можно использовать внутри JS-вставки. Без look-behind , правда, но всё же.

Как-то так. Проверить не могу.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@set @x = 0; /*
@echo off
for /f "usebackq tokens=*" %%A IN (`dir /b ^| cscript //nologo //e:jscript "%~f0"`) DO (
   echo. У этого файла 5 букв и одна цифра в имени: "%%~A"
) 
 
exit /b
*/
while (!WScript.StdIn.AtEndOfStream){
   var str = WScript.StdIn.ReadLine();
   // Здесь регулярное выражение
   // Пять цифр и одна буква
   if ( /^\d{5,5}[A-Za-zа-яА-ЯЁе](\.[^\.]*)?$/.test(str) ) WScript.StdOut.WriteLine(str);
}
Добавлено через 1 минуту
5 букв и одна цифра - это именно шаблон имени. Если имеется в виду в любом порядке, то регулярками не обойтись.
1
1 / 1 / 0
Регистрация: 12.06.2015
Сообщений: 67
07.09.2021, 16:38
Как заставить такой цикл for работать ?
В условии проверяется только ПЕРВЫЙ findstr ...
.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
title Выполняется командный файл %~F0
SetLocal EnableExtensions EnableDelayedExpansion
SET dir_dir=D:\Work_Test\ARM_Copy
Rem Дни месяца 01...31
SET str_MASK0="^[0][1-9]$"
SET str_MASK1="^[1][0-9]$"
SET str_MASK2="^[2][0-9]$"
SET str_MASK3="^[3][0-1]$"
for /F "delims=" %%i in ('dir /o /b /A:d %dir_dir% 
^| ^(findstr /RC:%str_MASK0% ^& findstr /RC:%str_MASK1% ^& findstr /RC:%str_MASK2% ^& findstr /RC:%str_MASK3%^) 
2^>nul') do (
  echo %%i
)
EndLocal
.

Добавлено через 50 минут
Вот такой код цикла for с функцией findstr и несколькими различными параметрами "/RC:" поиска подстроки работает...
.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
title Выполняется командный файл %~F0
SetLocal EnableExtensions EnableDelayedExpansion
SET dir_dir=D:\Work_Test\ARM_Copy
Rem Дни месяца 01...31
SET day_MASK0="^[0][1-9]$"
SET day_MASK1="^[1][0-9]$"
SET day_MASK2="^[2][0-9]$"
SET day_MASK3="^[3][0-1]$"
for /F "delims=" %%i in ('dir /o /b /A:d %dir_dir% 2^>nul 
^| findstr /RC:%day_MASK0% /RC:%day_MASK1% /RC:%day_MASK2% /RC:%day_MASK3%') do (
   echo %%i
)
.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.09.2021, 17:43
Jenyok2, не мучай 5-ю точку, я тут все сделал, если нужна еще какая сортировка - без проблем, и да - учи PowerShell, оно этого стОит, поверь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2021, 17:43
Помогаю со студенческими работами здесь

Поиск файлов по маске по всему ПК
Здравствуйте, подскажите пожалуйста код bat(желательно всё в 1 строчку) для поиска файлов по маске и их копирования в нужную(допустим C:\1)...

Поиск и копирование файла/ов по маске
Всем Доброго Времени Суток! Задачка вроде тревиальная, но я никак не могу решить! Условия: 1. Есть подкаталог и в нем файл/ы...

Поиск файлов по маске и их перемещение с условиями
Доброго здравствуйте, знатоки! Прошу помощи в написании батника : Рабочий каталог: D:\Work\Job 1) Проверка наличия в рабочем...

Поиск файла по маске и копирование его на флешку
Вообщем, на диске D есть папка Рабочие_станции Рабочая станция %произвольно не помню что%Рабочая%произвольно не помню...

Как удалять файлы по маске (сложное сравнение и поиск)
Добрый день! Помогите со скриптом. Имена файлов могут быть как с пробелами, так и без, могут быть с заглавных и строчных букв, могут быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru