Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502

Где ошибка в коде, предназначенном для поиска файлов?

24.04.2016, 22:42. Показов 1174. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Windows Batch file
1
2
3
4
set "f=temp"
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^|findstr /i "%f%"') do (
ren "%%a" *.log
 )
Не могу понять в чем ошибка, чисто принципиально интересно. В данном коде идет поиск слова temp без учета регистра, если temp.txt найден, ему меняется расширение, однако какие ключи бы я не подставлял, срабатывает и на FindTemp, и на tempstd, в общем везде находит temp, как исправить чтобы поиск ограничивался конкретно temp или Temp, а не прочими вариантами.

Добавлено через 7 минут
Самое интересное если убрать ключ /i срабатывает чисто конкретно на temp. А как включить Temp, TEMP !!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2016, 22:42
Ответы с готовыми решениями:

Где ошибка в коде поиска элементоа являющихся квадратами четных чисел?
5 Даны натуральные числа n, a1, a2, …, an. Определить количество членов ак последовательности а1, а2, …, аn , являющихся квадратами четных...

ошибка в коде для поиска
Помогите понять ошибку! procedure TForm2.Edit1Change(Sender: TObject); var help1, help2:string; begin ...

Ошибка в коде поиска для кнопки
Пытаюсь настроить поиск на форме по найденому коду в интернете, но никак под свою форму не могу его настроить. Поиск работает по принципу:...

16
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
25.04.2016, 00:41
Windows Batch file
1
findstr /? | findstr "word position"
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
25.04.2016, 10:43  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
Windows Batch file
1
findstr /? | findstr "word position"
Я вас не понял. Это означает изучай инструкцию?

Добавлено через 24 минуты
Все спасибо, разобрался, позиция в слове.
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
29.04.2016, 22:53  [ТС]
Вот изменил код.
Windows Batch file
1
2
3
4
set "f=\<temp"
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^|findstr /i "%f%"') do (
ren "%%a" *.log
 )
Вроде все работает прекрасно. Пропускаются файлы к примеру, FindTemp, и tempstd. Но столкнулся с проблемой, необходимо добавить в поиск файлы, в имени которых есть - черточка, к примеру Find-Temp и temp-std,( если в именах присутствует -Temp или temp-), то необходимо включить их в поиск. Надеюсь понятно объяснил.
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
29.04.2016, 23:59
намекаешь на регулярные выражения?
в find их нет,
в findstr их фактически тоже нет - настолько примитивно реализованы.

перебирайся в powershell - полноценный язык, всё есть.
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
30.04.2016, 19:39  [ТС]
Неужели нет никаких вариантов? Например
Windows Batch file
1
set "f=\<temp \-"
Добавляет черточку, но к сожалению находит варианты tempstd. Помогите пожалуйста!!
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
30.04.2016, 19:52
http://ab57.ru/cmdlist/findstr.html
0
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
30.04.2016, 20:12  [ТС]
ZoOoO, Так я на этой страничке и сижу. Просто не получается.
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
30.04.2016, 21:52
В общем все,что я придумал.Это писать три цикла под поиск каждого примера.В синтаксисе регулярных выражений я не силен.Поэтому методом подбора написал три варианта.Сначала идет первый цикл,потом после того как первый цикл отработал ,начинается второй.После завершения второго ,начинается третий.Все три цикла находятся в одном бат-файле
Windows Batch file
1
2
3
dir /a:-d /b|findstr /r /i   "$*.-temp.txt"
dir /a:-d /b|findstr /r /i   "^temp-.*txt"
dir /a:-d /b|findstr /r /i   "^temp.txt"
Добавлено через 11 минут
Windows Batch file
1
2
3
for /f "usebackq delims=" %%a in (`dir /a:-d /b^|findstr /r /i   "$*.-temp.txt"`) do ren "%%a" *.log
for /f "usebackq delims=" %%a in (`dir /a:-d /b^|findstr /r /i   "^temp-.*.txt"`) do ren "%%a" *.log
for /f "usebackq delims=" %%a in (`dir /a:-d /b^|findstr /r /i   "^temp.txt"`) do ren "%%a" *.log
1
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
01.05.2016, 15:30  [ТС]
Спасибо, пожалуй и правда только так.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
01.05.2016, 23:12
Windows Batch file
1
2
3
@echo off
for /f "delims= eol=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^|findstr/irc:"\<temp\>"') do ren "%%a" "*.log"
exit/b
.
1
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
01.05.2016, 23:53  [ТС]
alpap, Работает), хотя не пойму почему. Знак - черточка нигде не указан!
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
02.05.2016, 00:09
zombivadim,
Пройдет не только - , но и многое другое, например, #, но так как, надеюсь, такого нет иначе это уже другая история, то и беспокоиться не о чем, прилипания убирает findstr..., а delims= разрешит пробел в имени, например, ddd-temp ddd.txt или ddd#temp ddd.txt, пройдут оба.
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
02.05.2016, 23:43
alpap, есть одна проблема при использовании Вашего кода, — слово temp будет искаться также и в путях к файлу, поэтому во избежание этого нужно использовать дополнительный фильтр:
Windows Batch file
1
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^| findstr/irc:"\<temp\>"^| findstr/eirc:"\\[^\\]*temp[^\\]*"') do ren "%%a" "*.log"
.

А чтобы одновременно искать имена, точно совпадающие со словом temp, и имена, в которых это слово соединено с другим с помощью дефиса, можно использовать такой код:
Windows Batch file
1
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^| findstr/eir /c:"\\temp\.txt" /c:"\\[^\\]*-temp\.txt" /c:"\\temp-[^\\]*"') do ren "%%a" "*.log"
.
1
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
02.05.2016, 23:49
ComSpec, Но, как понимаю при использовании второго кода "temp aaa.txt" в пролете, не знаю будет ли, но я допускал.
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
03.05.2016, 02:30
alpap, угу, именно так.

Но можно сгруппировать нужные символы с помощью [], тогда группа из пробела и дефиса будет выглядеть так: [ -] или так: [- ], и код будет таким:
Windows Batch file
1
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^| findstr/eir /c:"\\temp\.txt" /c:"\\[^\\]*[ -]temp\.txt" /c:"\\temp[ -][^\\]*"') do ren "%%a" "*.log"
.

А если ещё добавить шаблон для поиска имён типа 123-temp-321 или 123 temp 321, то код будет таким:
Windows Batch file
1
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"^| findstr/eir /c:"\\temp\.txt" /c:"\\[^\\]*[ -]temp\.txt" /c:"\\temp[ -][^\\]*" /c:"\\[^\\]*[ -]temp[ -][^\\]*"') do ren "%%a" "*.log"
.

Когда же в группе будет более двух символов, и дефис не будет крайним, то его нужно будет экранировать, например, как в таком случае: [ \-#].

Есть ещё вариант, не затрагивающий слова в пути к файлам (но работает медленнее):
Windows Batch file
1
for /f "delims=" %%a in ('dir/a-d/b/s "D:\Test\*.txt"') do echo "%%~na"| >nul findstr/irc:"\<temp\>"&& ren "%%a" "*.log"
.
1
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
03.05.2016, 12:18
ComSpec,
Спасибо, п16_1 и _2, возьму в кладовку.

Не по теме:

и, строку

Цитата Сообщение от ComSpec Посмотреть сообщение
А если ещё добавить шаблон для поиска имён типа ..., то код будет таким:
, по части примера шаблона подрихтовать надо-бы для масс.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2016, 12:18
Помогаю со студенческими работами здесь

Ошибка в коде двоичного поиска
def binary_search(list, item): low=0 high=len(list)-1 while low &lt;=high: mid=(low+high)/2 guess=list ...

Функция поиска (ошибка в коде)
void poisk_po_imeni() { if(!sch) { cout&lt;&lt;&quot;Сначала что-нибудь введите!&quot;&lt;&lt;endl; } else{ char w; ...

Где ошибка в коде?
Для заданной функции z:=n-ln(n-0.4)+sqrt(n+1.2) , вывести на экран значения функции в пределах -1 до -10 и соответствующие им значения...

Где ошибка в коде?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; char fun (char *p, char a, int c) { char b; int i,j; ...

Где ошибка в коде?
какая здесь ошибка?


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
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