Пакетный файл для открытия последнего журнала Malwarebytes 'Anti-Malware - PullRequest
0 голосов
/ 21 марта 2009

В Vista я хочу запустить пакетный скрипт, чтобы открыть самый последний файл, основываясь либо на дате последнего изменения, либо на дате в имени файла. Он предназначен для журналов Malwarebytes 'Anti-Malware в папке% username & / appdata / roaming / Malwarebytes / Malwarebytes' Anti-Malware / Logs.

Файлы журналов в этом формате здесь

mbam-log-2009-03-21 (00-20-21) .txt

mbam-log-2009-03-21 (09-42-40) .txt

mbam-log-2009-03-21 (11-02-43) .txt

mbam-log-2009-03-21 (11-12-01) .txt

mbam-log-2009-03-21 (12-01-42) .txt

mbam-log-2009-03-21 (12-04-49) .txt

mbam-log-2009-03-21 (14-01-41) .txt

Так что это 24-часовой формат. Я прочитал на другой странице здесь, и получил этот скрипт здесь ..

@echo off
dir *.txt /b /on > systext.bak 
FOR /F %%i in (systext.bak) do set sysRunCommand=%%i 
call %sysRunCommand%
del systext.bak /y

но ему не нравится пробел в имени файла .. всегда выдается ошибка. У кого-нибудь есть идеи?

Ответы [ 3 ]

1 голос
/ 21 марта 2009

У вас на самом деле есть три проблемы в сценарии. Во-первых, %% i, вероятно, будет установлен на слова с именем файла - это можно исправить с помощью "delims=" в операторе for.

Во-вторых, вам нужно заключать в кавычки пробелы в именах call.

В-третьих, я не знаю о /y опции для del, возможно, вы имеете в виду del /f.

Эмивей, сделайте снимок:

@echo off
dir *.txt /b /on > systext.bak 
FOR /F "delims=" %%i in (systext.bak) do set sysRunCommand=%%i 
call "%sysRunCommand%"
del /f systext.bak
0 голосов
/ 21 сентября 2009

Я знаю, что это старый пост, и я не хочу его возрождать - у меня есть альтернативный подход к вопросу.

Malwarebytes 'Anti-Malware включает в себя возможность перенаправить файл журнала в другое место (папка или указанный файл).

Вы можете запустить "% programfiles% \ malwarebytes 'anti-malware \ mbam.exe" / logtofile c: \ logs \ bob-mbam-log.txt. / logtofolder также работает. (приведенная выше команда предполагает, что вы используете 32-битную систему.)

При указании файла mbam добавляется вместо перезаписи. Так что это может усложнить синтаксический анализ журнала.

0 голосов
/ 21 марта 2009

Следующий однострочный пакетный файл откроет последний измененный файл:

for /f "usebackq delims=" %%i in (`dir /b /o-d`) do @start "%%i"&goto :eof

Использование dir мне кажется гораздо проще, чем пытаться разобрать дату в имени файла. Вы также можете упорядочить по имени файла (поскольку формат даты в некоторой степени соответствует ISO-8601).

goto :eof только для того, чтобы быть уверенным, что будет открыт только самый последний файл, а не все в порядке даты / времени.

Что касается вашей проблемы с пространством, то, как правило, это следует исправить, заключив в кавычки имя файла, но иногда бывает немного трудно понять, где они должны быть. Кроме того, for по умолчанию токенизирует входные данные в пробелах, поэтому я включил туда delims=, который по существу говорит: «Поместите все в переменную и не делайте никаких токенизаций».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...