标题: [讨论]利用FOR命令匹配文本内容,如此代码可以么?
[打印本页]
作者: qingzangbasin
时间: 2006-12-23 21:45
标题: [讨论]利用FOR命令匹配文本内容,如此代码可以么?
autorun.inf只存在于根目录中。
其内容为固定格式:
[autorun]
open=sxs.exe
shell/auto/command=sxs
shell=auto
或者
[autorun]
open=sxs.exe -r
shell/auto/command=sxs.exe -r
shell=auto
或者
[autorun]
open=c:\sxs.exe -r
shell/auto/command=c:\sxs.exe -r
shell=auto
我的目的是截取sxs.exe,以及其路径(这个代码中暂时不需要路径)
------------------------------------
set "alldriver=c d e f g h"
set "vir=sxs.exe command.com ravmone.exe autorun.bat"
for %%i in (%alldriver%) do (
if exist %%i:\autorun.inf (
attrib -r -s -h %%i:\autorun.inf
for %%j in (%vir%) do (
echo %%j >>temp.txt
for /f "skip=1 tokens=2 delims== " %%k in (%%i:\autorun.inf) do (
echo %%~nxk----%%j >>temp.txt
if "%%~nxk"=="%%j" echo success >>temp.txt
)
)
)
)
[
Last edited by qingzangbasin on 2006-12-23 at 08:47 AM ]
作者: namejm
时间: 2006-12-24 03:22
只读取文本内容的话,无须对属性进行操作。给你一段演示代码(为了防止路径或文件名中带有特殊字符,所以在结果中加上了引号,以提高兼容性,可视具体情况决定是否采用引号):
@echo off
for %%i in (c d e f g h) do (
for /f "skip=1 tokens=2 delims==-" %%j in (%%i:\autorun.inf) do echo "%%~fi" "%%~nxi"&goto end
)
:end
pause
[
Last edited by namejm on 2006-12-23 at 02:59 PM ]
作者: qingzangbasin
时间: 2006-12-25 00:14
Quote: |
Originally posted by namejm at 2006-12-23 02:22 PM:
只读取文本内容的话,无须对属性进行操作。给你一段演示代码(为了防止路径或文件名中带有特殊字符,所以在结果中加上了引号,以提高兼容栮.. |
|
谢谢斑竹的代码,如何进一步匹配AUTORUN.INF中提取的内容呢?
作者: namejm
时间: 2006-12-25 00:25
匹配内容具体指什么,请详细说明一下。
作者: qingzangbasin
时间: 2006-12-25 00:41
Quote: |
Originally posted by namejm at 2006-12-24 11:25 AM:
匹配内容具体指什么,请详细说明一下。 |
|
获取AUTORUN.INF中的字符后,匹配
set "vir=sxs.exe command.com ravmone.exe autorun.bat"
这里的字符
作者: namejm
时间: 2006-12-25 01:30
不懂你在说什么。请把要求
详细清晰地描述一下:获取到什么字符?何为匹配?……
作者: qingzangbasin
时间: 2006-12-25 10:33
Quote: |
Originally posted by namejm at 2006-12-24 12:30 PM:
不懂你在说什么。请把要求详细清晰地描述一下:获取到什么字符?何为匹配?…… |
|
呵呵,版主对我的代码
视而不见?
目的就是利用FOR获取AUTORUN.INF中的调用程序,然后判断是否和定义的
set "vir=sxs.exe command.com ravmone.exe autorun.bat"
字符串匹配。
作者: namejm
时间: 2006-12-25 11:38
不是我视而不见,而是你所谓的
匹配 让我感到无法理解:什么叫匹配?完全一样?还是只要是其中的一个?set "vir=sxs.exe command.com ravmone.exe autorun.bat" 显然让人不知所措。你在7楼的描述我仍然看不明白,因为你还是用了 匹配 二字。要想让别人给出准确的代码,就得把自己的意思准确表达到位,不要让人感到无所适从或者歧义丛生。
作者: qingzangbasin
时间: 2006-12-25 11:52
Quote: |
Originally posted by namejm at 2006-12-24 10:38 PM:
不是我视而不见,而是你所谓的 匹配 让我感到无法理解:什么叫匹配?完全一样?还是只要是其中的一个?set "vir=sxs.exe command ... |
|
还是谢谢您的关注,我基本解决了问题。:)
以后在学习批处理的同时加强语言功底:)
作者: zh159
时间: 2006-12-25 13:34
LZ应该是把set "vir=sxs.exe command.com ravmone.exe autorun.bat"作为一个“库”的方式保存要匹配的内容,利用for %%j in (%vir%) do (......的方式逐一比对%vir%的变量“库”“sxs.exe command.com ravmone.exe autorun.bat”中的一个文件名。
只是没有表达清楚