![]() |
Поиск строки, содержащей текст, и копирование её в лог
Поиск строки, содержащей текст, и копирование её в лог.
Для кучи файлов, расположенных НЕ в одной папке, но внутри одного куста. Файлы НЕ имеют разрешения, потому фильтрация по типу файлов, используемая в разных примерах, не годится Для файлов, лежащих в одной папке, срaбатывает код Код:
@echo off Код:
@echo off Где косячу - не понимаю (( |
|
Цитата:
|
Цитата:
Код:
pushd "%SOURCE%" по идее, первый вариант отлично текущую папку меняет и лог создаётся в ней, а не папке батника, почему здесь потребовалось добавлять? зы, да, расширение наверно ,более точный перевод extension |
Цитата:
|
Цитата:
Код:
>"D:\pics\2\%~n0.log" findstr.exe /i /l /s /c:"mystring" "D:\pics\2\*." |
Если в логе не нужно имя файла, то
Код:
@Echo Off |
Цитата:
|
Цитата:
Цитата:
Цитата:
Так что, походу, придется ограничиться добавкой одного ключа /s , а фильтрацию вывода (только после двоеточия) оставить. Цитата:
спасибо :) |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
D:\folder либо \\сетевой ресурс\шара без переделки батника Код:
@Echo Off |
Цитата:
Код:
Set "SOURCE=\\192.168.1.1\test1\Soft_In\тра ля ля" |
Iska, вот примеры из того, что у меня есть под руками. Находимся Z:\
В командной строке делаем findstr /i /l /s /c:"wmic" "Z:\Soft_In\тра ля ля\*.bat" Получаем результат Z:\Soft_In\тра ля ля\я180527.bat:wmic fsdir where "name='%DirName%'" get 'CreationDate' /format:csv В командной строке делаем findstr /i /l /s /c:"wmic" "Soft_In\тра ля ля\*.bat" Получаем результат Soft_In\тра ля ля\я180527.bat:wmic fsdir where "name='%DirName%'" get 'CreationDate' /format:csv Аналогично при задании пути \\192.168.1.1\test1\Soft_In\тра ля ля" Если в командном файле в For delims=: то номер токена при разборе придётся указывать свой в зависимости от способа описания пути Применение Pushd в командном файле и findstr /i /l /s /c:"wmic" "*.bat" даёт возможность в любом случае брать для вывода второй токен. |
megaloman, спасибо, ясно.
Первый пример несколько натянут, вполне можно перейти от относительного к абсолютному пути. Со вторым же вариантом: Цитата:
|
Цитата:
Код:
findstr /i /l /s /c:"%mystring%" "%SOURCE%\%Mask%" Кроме того: Цитата:
Код:
for /f "delims=" %%i in ('dir /b/a-d "c:\temp\*.*") do echo %%~dpfi в отличие от: Код:
set "d=C:\TEMP" |
YuS_2, Ваши комментарии понятны, но они не по делу и не по существу данног конкретного вопроса, в отличие от разъяснения коллеги megaloman.
|
Цитата:
в общем, главная мысль в комментариях: Цитата:
|
возникла похожая задачка...
Убить все задачи планировщика, где в имени встречается слово OneDrive. А имя там может включать в себя всякие уиды и черте-что еще. Пока логика подсказывает громоздкую конструкцию из 3 циклов: 1) schtasks /query >%logfile% 2) findstr.exe /b /i /l /c:"Onedrive" >%log2% 3) for /f "tokens=1 delims= " %%i in (%log2%) schtasks /delete /tn "%%i" /f но наверняка же можно это сделать как-то изящнее? |
bredych, упакуйте содержимое полученного %logfile% в архив, каковой приложите к сообщению.
|
Вложений: 1
Цитата:
Если вы про пробелы в имени задачи - они были, да. Что-то типа "OneDrive update ...-(S-1-5-21-2686153969-1940417165-1241769948)" |
bredych, мне в архиве как раз нужно видеть эти задачи. Сделаете — выкладывайте.
|
Время: 05:09. |
Время: 05:09.
© OSzone.net 2001-