在Vista中,我想运行一个批处理脚本,根据上次修改日期或文件名中的日期打开最新文件。这是Malwarebytes在%username& / appdata / roaming / Malwarebytes / Malwarebytes'防恶意软件/日志文件夹中的防恶意软件日志。
此处的日志文件采用此格式
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
但它不喜欢文件名中的空格..总是会出错。 有人有什么想法吗?
答案 0 :(得分:1)
您在脚本中实际上有三个问题。第一个是%% i可能被设置为带有文件名的单词 - 这可以通过"delims="
语句中的for
来修复。
第二个是你需要在call
语句中引用空间文件名。
第三是我不知道/y
的{{1}}选项,也许你的意思是del
。
Amyway,给这个人一个机会:
del /f
答案 1 :(得分:0)
以下单行批处理文件将打开最近修改的文件:
for /f "usebackq delims=" %%i in (`dir /b /o-d`) do @start "%%i"&goto :eof
使用dir
比试图解析文件名中的日期要简单得多。您也可以按文件名排序(因为日期格式有点ISO-8601-ish排序很好)。
goto :eof
就是为了确保只打开最新的文件而不是按日期/时间顺序打开。
至于你的空间问题,用引号包围文件名通常应该解决这个问题,但有时候知道他们必须要去哪里有点困难。此外,for
默认情况下将其输入标记为空格,这就是我在其中包含delims=
的原因,其中基本上是“将所有内容放入变量并且不进行任何标记化”。
答案 2 :(得分:0)
我知道这是一个老帖子,我并不是要重振它 - 我有一个替代方法来解决这个问题。
Malwarebytes的防恶意软件包括将日志文件重新路由到备用位置(文件夹或指定文件)的功能。
您可以运行“%programfiles%\ malwarebytes'anti-malware \ mbam.exe”/ logtofile c:\ logs \ bob-mbam-log.txt。 / logtofolder也有效。 (上面的命令假设您使用的是32位系统。)
指定文件时,mbam会附加而不是覆盖。因此,这可能会使日志更难解析。