Войти

Показать полную графическую версию : [решено] Вычислить путь из полного пути, и обработать его программой.


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

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

Foreigner
15-07-2011, 06:50
PATRI0T,
Не совсем понял какие пути надо "выковыривать", наверное что-то вроде:

@echo off
setlocal

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

amel27
15-07-2011, 08:04
еще вариант - с использованием консольного интерфейса программы (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"
))
Позволяет очень быстро искать на NTFS системах, напрямую обращаясь к ней, как к базе данных »не так - позволяет быстро искать с СВОЕЙ базе данных, которая создаётся/обновляется посредством предварительного сканирования и оперативного мониторинга локальных NTFS-томов
кстати, очень хорошая прога - хозяйке на заметку »неплоха, очевидные плюсы:
- бесплатность;
- скорость;
- портабельность;
- поддержка регулярных выражений;
- возможность подключения к копии программы для сканирования удаленных хостов;
- встроенный HTTP-сервер;
- наличие консольного интерфейса

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

Iska
15-07-2011, 09:01
Задача автором поставлена не совсем корректно:
-p <string>, --path <string>
Path to scan

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

PATRI0T
15-07-2011, 09:18
Спасибо большое за ответы, только че ж вам не спится, в такую то рань :)
досадные минусы:
- нельзя запустить как сервис, т.е. требуется активный пользовательский сеанс;
- отсутствует поиск по атрибутам и размеру файла »
Ну... не все коту масленница :).. Мне очень нравится, что 2 терабайтных винта с мелкими файлами (~ 2млн файлов) она меньше чем за секунду перелопачивает. Можно написать разрабу пожелания.
Кстати, к плюсам ты забыл добавить ее портативность.

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

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

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

amel27
15-07-2011, 09:51
А что за консольный интерфейс ES? ES=Everything? »
ссылка (http://www.voidtools.com/es.zip) с оффсайта (http://www.voidtools.com/download.php)

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

PATRI0T
15-07-2011, 10:55
Хм... слепой ваще.. Спасибо большое, тема решена.
ЗЫ. А про прогу ты знал? Расширил твой кругозор?

amel27
15-07-2011, 11:42
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"
))
А про прогу ты знал? »не знал, но мне от неё пользы мало по отмеченным выше причинам




© OSzone.net 2001-2012