Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вычислить путь из полного пути, и обработать его программой. (http://forum.oszone.net/showthread.php?t=211219)

PATRI0T 14-07-2011 22:06 1713586

Вычислить путь из полного пути, и обработать его программой.
 
Добрый вечер, суть в следующем: нужно почистить комп от вирусов, они заражают только exe файлы.
Специальная лечащая утилита от касперского virutkiller.exe ищет во всех файлах, но вири заражают только exe. (Вероятность 99.99%). Утилитка позволяет указать путь к директории, где искать зловредов.
Также есть другая программа Everything. - Позволяет очень быстро искать на NTFS системах, напрямую обращаясь к ней, как к базе данных (кстати, очень хорошая прога - хозяйке на заметку), и найденые файлы можно экспортировать в txt.
Задача: Написать батник, который будет брать все строки из этого файла, выковыривать путь к каталогу из полного пути и запускать virutkiller.exe -p "<path>"

Помогите с батничком, я не йода :)
(Глядя на то, что тут вытворяют с ненависным\неудобным мне командным языком винды, у меня аж волосы дыбом встают. Низкий поклон всем йодам :) )

Foreigner 15-07-2011 06:50 1713767

PATRI0T,
Не совсем понял какие пути надо "выковыривать", наверное что-то вроде:
Код:

@echo off
setlocal

for /f "tokens=*" %%i in ( list.txt ) do virutkiller.exe -p "%%~dpi"


amel27 15-07-2011 08:04 1713783

еще вариант - с использованием консольного интерфейса программы (ES):
в отличие от варианта Foreigner, утилита запускается один раз для каждого каталога, а не для каждого EXE-файла
читать дальше »
Код:

(for /f "delims=" %%a in ('es -s "*.exe"') do @(set "$a=%%~dpa"
 SETLOCAL EnableDelayedExpansion
 if not "!$a!"=="!$b!" virutkiller -y -p "!$a!"
 for /f "delims=" %%x in ("!$a!") do @ENDLOCAL& set "$b=%%~x"
))


Цитата:

Цитата PATRI0T
Позволяет очень быстро искать на NTFS системах, напрямую обращаясь к ней, как к базе данных »

не так - позволяет быстро искать с СВОЕЙ базе данных, которая создаётся/обновляется посредством предварительного сканирования и оперативного мониторинга локальных NTFS-томов
читать дальше »
Цитата:

Цитата PATRI0T
кстати, очень хорошая прога - хозяйке на заметку »

неплоха, очевидные плюсы:
- бесплатность;
- скорость;
- портабельность;
- поддержка регулярных выражений;
- возможность подключения к копии программы для сканирования удаленных хостов;
- встроенный HTTP-сервер;
- наличие консольного интерфейса

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

Iska 15-07-2011 09:01 1713803

Задача автором поставлена не совсем корректно:
Код:

  -p <string>,  --path <string>
    Path to scan

обрабатывает не только файлы по указанному пути, но и во всех вложенных каталогах. Таким образом, если ориентироваться на озвученное предложение — «VirutKiller.exe» может многократно «молотить» одни и те же файлы.

PATRI0T 15-07-2011 09:18 1713813

Спасибо большое за ответы, только че ж вам не спится, в такую то рань :)
Цитата:

Цитата amel27
досадные минусы:
- нельзя запустить как сервис, т.е. требуется активный пользовательский сеанс;
- отсутствует поиск по атрибутам и размеру файла »

Ну... не все коту масленница :).. Мне очень нравится, что 2 терабайтных винта с мелкими файлами (~ 2млн файлов) она меньше чем за секунду перелопачивает. Можно написать разрабу пожелания.
Кстати, к плюсам ты забыл добавить ее портативность.

Цитата:

Цитата Foreigner
Не совсем понял какие пути надо "выковыривать", наверное что-то вроде: »

читать дальше »

Есть файл с такими строками:
E:\Мое\Personal\Рабочий стол\разбирати\PATRIOT26\Bootxp\BootVis-Tool.exe
Его нужно прочитать, и для каждого файла извлечь путь к его каталогу и запустить утилиту с этим параметром.
Но amel27 предложил гораздо более рациональное решение - запускать утилиту для каждого каталога а не файла.


Цитата:

Цитата amel27
консольного интерфейса программы »

А что за консольный интерфейс ES? ES=Everything? Тогда ничего не нашел такого.. ПРостите уж..

amel27 15-07-2011 09:51 1713825

Цитата:

Цитата PATRI0T
А что за консольный интерфейс ES? ES=Everything? »

ссылка с оффсайта

Цитата:

Цитата PATRI0T
к плюсам ты забыл добавить ее портативность »

добавил

PATRI0T 15-07-2011 10:55 1713867

Хм... слепой ваще.. Спасибо большое, тема решена.
ЗЫ. А про прогу ты знал? Расширил твой кругозор?

amel27 15-07-2011 11:42 1713890

PATRI0T, еще одна итерация с учетом особенностей virutkiller, отмеченной Iska
Код:

@(set $b=?
  for /f "delims=" %%a in ('es -s "*.exe"') do @(set "$a=%%~dpa"
  SETLOCAL EnableDelayedExpansion
  call set "$c=%%$a:!$b!=?%%"
  if "!$c:~,1!"=="?" (set "$a=!$b!") else virutkiller -y -p "!$a!"
  for /f "delims=" %%x in ("!$a!") do @ENDLOCAL& set "$b=%%~x"
))

Цитата:

Цитата PATRI0T
А про прогу ты знал? »

не знал, но мне от неё пользы мало по отмеченным выше причинам


Время: 02:45.

Время: 02:45.
© OSzone.net 2001-