|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - BAT поиск текста в файле с условием |
|
||||
|
|
CMD/BAT - BAT поиск текста в файле с условием
|
|
Пользователь Сообщения: 76 |
Помогите с батничком
Необходимо чтобы батник проверял в папке все файлы которые там есть. Файлы по сути текстовые, но лежат в формате *.msg так вот нужно чтобы батник проверял присутствует в файле текст например "for <adm@" , если да , то этот файл нужно скопировать в папку adm если "for <info@" то этот файл нужно скопировать в папку info. Но важно поиск с начала файла и по первой найденной строке потому как в файле могут быть обе строки "for <adm@" и "for <info@" важна именно первая найденная строка Заранее премного благодарен! |
|
|
Отправлено: 21:48, 30-04-2014 |
|
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 23:49, 30-04-2014 | #2 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Да скрипт работает, но как быть если нужно добавить больше аргументов, например искать "for <adm@" "for <info@" "for <ivanov@" "for <petrov@" "for <sidorov@" что первое находит в ту папку и кладем adm info ivanov petrov и т.д.
|
|
Отправлено: 16:50, 04-05-2014 | #3 |
|
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Да не вопрос!
Цитата rosalin:
Полная сортировка по заданному алгоритму: @echo off
setlocal enabledelayedexpansion
for %%i in (*.msg) do (
for /f "delims=" %%j in ('
findstr /inrc:"for <.*@" "%%~i"^| findstr /b 1:
') do (
set "string=%%j"
set "string=!string:*for <=!"
for /f "delims=@" %%k in ("!string!") do (
md "%%k" 2>nul
copy "%%~i" "%%k">nul
)
)
)
endlocal
exit /b
|
|
|
Отправлено: 00:11, 05-05-2014 | #4 |
|
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата rosalin:
Еспи нужна выборочная сортировка с любым числом аргументов, то тогда так: @echo off
call:# "adm" "info" "ivanov" "petrov" "sidorov"
exit /b
:#
for %%i in (*.msg) do (
for /f "delims=" %%j in ('
findstr /inrc:"for <.*@" "%%~i"^| findstr /b 1:
') do (
for %%k in (%*) do call:## "%%j" %%k "%%~i"
)
)
exit /b
:##
echo %1| >nul (
findstr /ilc:"for <%~2@"&& (
md %2 2>&1
copy %3 %2
))
exit /b
Если нужные папки не существуют, то они будут созданы. |
||
|
Отправлено: 00:33, 05-05-2014 | #5 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 00:46, 05-05-2014 | #6 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать не срабатывает если перед искомой строкой есть любой текст или просто несколько пустых строк
|
|
Отправлено: 01:14, 05-05-2014 | #7 |
|
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать rosalin, нашёл и устранил проблему. Привожу отредактированный код для обоих пакетных файлов.
@echo off
setlocal enabledelayedexpansion
for %%i in (*.msg) do (
for /f "delims=" %%j in ('
findstr /irc:"for <.*@" "%%~i"^| findstr /n "^"^| findstr /b 1:
') do (
set "string=%%j"
set "string=!string:*for <=!"
for /f "delims=@" %%k in ("!string!") do (
md "%%k" 2>nul
copy "%%~i" "%%k">nul
)
)
)
endlocal
exit /b
@echo off
call:# "adm" "info" "ivanov" "petrov" "sidorov"
exit /b
:#
for %%i in (*.msg) do (
for /f "delims=" %%j in ('
findstr /irc:"for <.*@" "%%~i"^| findstr /n "^"^| findstr /b 1:
') do (
for %%k in (%*) do call:## "%%j" %%k "%%~i"
)
)
exit /b
:##
echo %1| >nul (
findstr /ilc:"for <%~2@"&& (
md %2 2>&1
copy %3 %2
))
exit /b
|
|
Отправлено: 08:16, 05-05-2014 | #8 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Georgio , круто! А как второй скрипт надо запускать с параметром ?
|
|
Отправлено: 09:02, 05-05-2014 | #9 |
|
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата rosalin:
С помощью командной строки или запускающего пакетного файла: , предварительно убрав из кода вторую и третью строки: . |
|
|
Отправлено: 09:34, 05-05-2014 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - как сделать .bat который выполнит поиск нужного текста с заменой не нужного на нужный | ***b.m.m.c.b*** | Скриптовые языки администрирования Windows | 3 | 01-03-2018 09:53 | |
| CMD/BAT - Поиск и удаление текста в файле | ajakzs | Скриптовые языки администрирования Windows | 6 | 18-10-2012 09:18 | |
| CMD/BAT - Поиск и замена текста через bat | Lilless | Скриптовые языки администрирования Windows | 0 | 28-02-2012 02:08 | |
| CMD/BAT - [решено] Поиск текста в *.inf файле и вывод на экран | 4zz | Скриптовые языки администрирования Windows | 1 | 25-07-2011 16:23 | |
| [решено] Поиск и замена текста в файле | TERMINAL | AutoIt | 6 | 16-03-2011 17:49 | |
|