在Vista中,我希望运行一个批处理脚本,根据上次修改的日期或文件名中的日期打开最近的文件。它用于%username&/appdata/roaming/Malwarebytes/Malwarebytes‘反恶意软件/日志文件夹中的Malware字节反恶意软件日志。
这里的日志文件是这种格式的。
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但它不喜欢文件名中的空格。总是犯错误。有人有什么想法吗?
发布于 2009-03-21 03:57:40
实际上,脚本中有三个问题。首先,%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发布于 2009-03-21 01:13:24
以下一行批处理文件将打开最近修改的文件:
for /f "usebackq delims=" %%i in (`dir /b /o-d`) do @start "%%i"&goto :eof使用dir比尝试剖析文件名中的日期简单得多。您也可以按文件名排序(因为日期格式有点像ISO-8601-ish比较好)。
goto :eof只是为了确保只打开最近的文件,而不是按日期/时间的顺序打开所有文件。
至于您的空间问题,在文件名周围加上引号通常会修复这个问题,但有时很难知道它们在哪里。而且,默认情况下,for会在空格中标记它的输入,这就是为什么我在其中包含了delims=,它本质上说:将所有内容都放入变量中,而不进行任何标记。
发布于 2009-09-21 19:02:53
我知道这是个老职位,我不想再提这个问题--我有一个解决这个问题的办法。
Malware字节的反恶意软件包括将日志文件重新路由到另一个位置(文件夹或指定文件)的能力。
您可以运行“%programfiles%\malware字节‘防恶意软件\mbam.exe”/logtofile c:\log\bob log.txt。/logtofolder也能工作。(上面的命令假设您使用的是32位系统。)
当指定文件时,mbam会追加而不是覆盖。因此,这可能会使日志更难解析。
https://stackoverflow.com/questions/668513
复制相似问题