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

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

Ответить
Настройки темы
CMD/BAT - [решено] FINDSTR работа с найденым файла

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


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

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


Доброго времени суток!
Подскажите пожалуйста как решить такую задачу, никак не могу найти решение.
Есть батник, который ищет файл по параметрам:

@echo off
Setlocal EnableDelayedExpansion
@echo zadaem param
set sm=239
rem ищем
findstr /s /m "!sm!" C:\b1\test1\*.*

Дальше нужно скопировать найденный файл, но никак не могу найти как. Пробовал делать так:
findstr /s /m "!sm!" C:\b1\test1\*.* > C:\b1\temp1\t1.txt

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

Отправлено: 14:44, 10-09-2013

 

Старожил


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

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


Код: Выделить весь код
For /F "delims=" %%A In ('findstr /s /m "!sm!" C:\b1\test1\*.* ') Do ( Copy "%%~A" "Куда копировать")
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:11, 10-09-2013 | #2



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

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


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


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

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


Спасибо! Все работает!
Не могли бы прокомментировать код, а то не совсем понимаю принцип работы.

Отправлено: 16:31, 10-09-2013 | #3


Старожил


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

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


a508475, FindStr с ключом /M выводит только имя (и полный путь, в случае использования одновременно с /S) файла, в котором найдена искомая строка. С помощью цикла For с пустым разделителем (это означает, что мы получаем входящую строку "как есть") это имя записывается во временную переменную внутри цикла (%%A) и далее копируется с помощью Copy. Советую почитать справку For /?, там всё гораздо более подробно описано.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:58, 10-09-2013 | #4


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


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

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


findstr этот шаг я сам делал, мне непонятно как раз с for
%%А - это переменная? в мануале к батнику написано что переменные обозначаются между знаками ! - например !j!
/f "delims=" что делает? делимс это какая то синтаксическая константа?

Отправлено: 17:09, 10-09-2013 | #5


Старожил


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

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


Цитата a508475:
%%А - это переменная? »
Это внутренняя переменная, которая работает только внутри цикла For.
Цитата a508475:
/f "delims=" что делает? делимс это какая то синтаксическая константа? »
Устанавливает пустой разделитель вместо разделителя по умолчанию. Цитата из For /? (Эту справку я вам всё же рекомендую прочитать, чтобы мне не приходилось дословно её пересказывать):
Цитата:
Код: Выделить весь код
FOR /F ["ключи"] %переменная IN (`команда`) DO команда [параметры]
...Необязательный параметр "ключи" служит для переопределения правил разбора по умолчанию. Он представляет собой заключенную в кавычки строку, содержащую одно или несколько ключевых слов для определения параметров разбора.
читать дальше »
Код: Выделить весь код
        eol=c           - знак начала комментария в конце строки
                          (допускается задание только одного знака).
        skip=n          - число пропускаемых при обработке строк в начале
                          файла.
        delims=xxx      - набор разделителей вместо используемых по умолчанию
                          пробела и знака табуляции.
        tokens=x,y,m-n  - номера подстрок из каждой строки, передаваемые в тело
                          цикла "for" для каждой итерации. При использовании
                          этого ключа выделяются дополнительные имена
                          переменных. Формат m-n представляет собой диапазон
                          подстрок с номерами от m по n. Если последний знак
                          в строке tokens= является звездочкой, создается
                          дополнительная переменная, значением которой будет
                          весь оставшийся текст в строке после разбора
                          последней подстроки.
        usebackq        - применение новой семантики, при которой строка,
                          заключенная в обратные кавычки, выполняется как
                          команда, строка, заключенная в прямые одиночные
                          кавычки, является строкой-литералом, а двойные
                          кавычки могут использоваться для задания имен
                          файлов в наборе.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:20, 10-09-2013 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] findstr помощь firstarey Скриптовые языки администрирования Windows 26 12-10-2013 12:17
CMD/BAT - [решено] Помогите с findstr dima05605 Скриптовые языки администрирования Windows 9 09-12-2012 19:50
CMD/BAT - [решено] Помогите с findstr dima05605 Скриптовые языки администрирования Windows 15 28-10-2012 19:49
Разное - [решено] Работа со строками txt файла. kirillgoogle Программирование и базы данных 16 26-06-2012 14:00
Работа с почтовиком с помощью бат файла lehha Программирование и базы данных 5 18-04-2003 03:08




 
Переход