[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样获取第三方程序输出结果?

目前我有一个控制台程序,运行后输入如下命令,可以显示服务信息
我想问下,有没办法用批处理显示所有服务名称及对应的路径,就是下面红色这两项
其中dir命令支持>输入到外部文件,比如 dir >1.txt
那个程序可以在flover.ys168.com 下 网友点播 找到(fscmd.rar)

简单地说,就是先显示所有服务
reg /system:1
cd controlset001\services
dir >c:\1.txt
然后,如何一个个进这些服务,把需要的信息提取出来呢?


C:\WINDOWS>line 2048

    设置屏幕显示行数为:2048

C:\WINDOWS>reg /system:1

        文件加载成功,请使用regdir来浏览注册表。

?:\>cd controlset001\services
?:\controlset001\services>dir
2009-11-13 01:15:09            REG_KEY         .NET CLR Data
2009-11-13 01:15:09            REG_KEY         .NET CLR Networking
2009-11-13 01:15:09            REG_KEY         .NET Data Provider for Oracle
2009-11-13 01:15:09            REG_KEY         .NET Data Provider for SqlServer
.
.
?:\controlset001\services\wscsvc>dir
2008-11-29 00:27:12            REG_KEY         Parameters
2008-11-29 00:27:12            REG_KEY         Security
                               REG_DWORD       Type
32
                               REG_DWORD       Start
2
                               REG_DWORD       ErrorControl
1
                               REG_EXPAND_SZ   ImagePath
%SystemRoot%\System32\svchost.exe -k netsvcs
                               REG_SZ          DisplayName
Security Center

                               REG_MULTI_SZ    DependOnService
winmgmt
                               REG_SZ          ObjectName
LocalSystem
                               REG_SZ          Description
监视系统安全设置和配置。

本帖最后由 dnfreeuser 于 2011-9-18 20:52 编辑

回复 4# Batcher


  谢谢,不过这个方法有个问题:
当然,上面可以查找服务并获取信息,但是,我提这个问题主要是用来查找rootkit的,即可能的隐藏的注册表项,使用常规命令根本无法发现的
上面这个问题实际上只完成了一半,即查找所有服务,后面还有的是,比较此种方法的结果和常规获取的结果,如果有不同则高亮显示,此最终结果基本上就是隐藏的东东了.

TOP

不需要使用fscmd
  1. @echo off
  2. sc query state= all | findstr "SERVICE_NAME" >%temp%\servName.txt
  3. (for /f "tokens=1*" %%a in (%temp%\servName.txt) do (
  4.     sc qc %%b | findstr "BINARY_PATH_NAME" >%temp%\servPath.txt
  5.     for /f "tokens=2*" %%c in (%temp%\servPath.txt) do (
  6.         echo,%%b "%%~d"
  7.     )
  8. ))>services.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# ArdentMan
下面三句是已有批处理里的
reg /system:1
cd controlset001\services
dir >c:\1.txt

1.txt的内容是像下面这样的,需要每个REG_KEY类型的,cd 后面的项名称如“.NET CLR Data”
2009-11-13 01:15:09            REG_KEY         .NET CLR Data
2009-11-13 01:15:09            REG_KEY         .NET CLR Networking
2009-11-13 01:15:09            REG_KEY         .NET Data Provider for Oracle
2009-11-13 01:15:09            REG_KEY         .NET Data Provider for SqlServer

然后,CD以后,再DIR下,会显示
2008-11-29 00:27:12            REG_KEY         Parameters
2008-11-29 00:27:12            REG_KEY         Security
                                              REG_DWORD   Type
32
                                              REG_DWORD   Start
2
                                              REG_DWORD   ErrorControl
1
                                              REG_EXPAND_SZ   ImagePath
%SystemRoot%\System32\svchost.exe -k netsvcs
                                              REG_SZ             DisplayName
Security Center
                                              REG_MULTI_SZ    DependOnService

现在需要的是提取类型不为REG_KEY的 ImagePath和DisplayName这两个的值
不为REG_KEY的话,其值在第二行的开头的,如上面的值是"%SystemRoot%\System32\svchost.exe -k netsvcs"和“Security Center”这两个
最后一行内输出,如果路径为空的话则不输出,因为有的imagepath可能是不存在的。

服务:Security Center  路径:%SystemRoot%\System32\svchost.exe -k netsvcs

像上面这样,是提取了一行,即“.NET CLR Data“这样一行,如何把所有行都提取出来呢?

TOP

楼主应描述下要提取的规则,
这样贴个文本上来叫别人如何帮你?
一路飘过的鸟~~~

TOP

返回列表