中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]利用FOR命令匹配文本内容,如此代码可以么?
作者:
标题: [讨论]利用FOR命令匹配文本内容,如此代码可以么? 上一主题 | 下一主题
qingzangbasin
初级用户





积分 36
发帖 14
注册 2006-12-16
状态 离线
『楼 主』:  [讨论]利用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 ]

2006-12-23 21:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  只读取文本内容的话,无须对属性进行操作。给你一段演示代码(为了防止路径或文件名中带有特殊字符,所以在结果中加上了引号,以提高兼容性,可视具体情况决定是否采用引号):
@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 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 qingzangbasin 分数: +2  时间:2006-12-25 00:12




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-24 03:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingzangbasin
初级用户





积分 36
发帖 14
注册 2006-12-16
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by namejm at 2006-12-23 02:22 PM:
  只读取文本内容的话,无须对属性进行操作。给你一段演示代码(为了防止路径或文件名中带有特殊字符,所以在结果中加上了引号,以提高兼容栮..

谢谢斑竹的代码,如何进一步匹配AUTORUN.INF中提取的内容呢?

2006-12-25 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  匹配内容具体指什么,请详细说明一下。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-25 00:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingzangbasin
初级用户





积分 36
发帖 14
注册 2006-12-16
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by namejm at 2006-12-24 11:25 AM:
  匹配内容具体指什么,请详细说明一下。

获取AUTORUN.INF中的字符后,匹配
set "vir=sxs.exe command.com ravmone.exe autorun.bat"
这里的字符

2006-12-25 00:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 6 楼』:  

  不懂你在说什么。请把要求详细清晰地描述一下:获取到什么字符?何为匹配?……



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-25 01:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingzangbasin
初级用户





积分 36
发帖 14
注册 2006-12-16
状态 离线
『第 7 楼』:  



  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"
字符串匹配。

2006-12-25 10:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 8 楼』:  

  不是我视而不见,而是你所谓的 匹配 让我感到无法理解:什么叫匹配?完全一样?还是只要是其中的一个?set "vir=sxs.exe command.com ravmone.exe autorun.bat" 显然让人不知所措。你在7楼的描述我仍然看不明白,因为你还是用了 匹配 二字。要想让别人给出准确的代码,就得把自己的意思准确表达到位,不要让人感到无所适从或者歧义丛生。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-25 11:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qingzangbasin
初级用户





积分 36
发帖 14
注册 2006-12-16
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by namejm at 2006-12-24 10:38 PM:
  不是我视而不见,而是你所谓的 匹配 让我感到无法理解:什么叫匹配?完全一样?还是只要是其中的一个?set "vir=sxs.exe command ...

还是谢谢您的关注,我基本解决了问题。:)
以后在学习批处理的同时加强语言功底:)

2006-12-25 11:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 10 楼』:  

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”中的一个文件名。
只是没有表达清楚

2006-12-25 13:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: