.foreach

.foreach 关键字分析一个或多个命令的输出并将该输出中每一个值作为另一个或多个命令的输入

.foreach [Options( Variable  { InCommands } ) { OutCommands }

.foreach [Options/s ( Variable  "InString) { OutCommands }

.foreach [Options/f ( Variable  "InFile) { OutCommands }

Options
可以是下面选项的任意组合:
/pS InitialSkipNumber
使得开头的一些符号被跳过。InitialSkipNumber 指定不传递给OutCommands 的输出关键字的数量。
/ps SkipNumber
每次执行命令时都会跳过一些符号。每次将符号传递给OutCommands 之后,SkipNumber 个数的符号都会被忽略

我们首先搜索下带字符T的地址有哪些:

  1. 0:000> s -[1]a  0029eeec  L1000 "T"
  2. 0x0029eefb
  3. 0x0029ef03
  4. 0x0029ef0b
  5. 0x0029ef15
  6. 0x0029f034
  7. 0x0029f06a
  8. 0x0029f07a
  9. 0x0029f08a
  10. 0x0029f09e
  11. 0x0029f356
  12. 0x0029f7f0
  13. 0x0029f989
  14. 0x0029fa50

然后我们用.foreach把它们da出来

  1. 0:000> .foreach(place{s -[1]a  0029eeec  L1000 "T"}){da ${place}}
  2. ^ Syntax error in '.foreach(place{s -[1]a  0029eeec  L1000 "T"}){da ${place}}'
  3. 0:000> .foreach(place {s -[1]a  0029eeec  L1000 "T"}){da ${place}}
  4. 0029eefb  "Tencent\TSVulFw\TSVulFW.DAT"
  5. 0029ef03  "TSVulFw\TSVulFW.DAT"
  6. 0029ef0b  "TSVulFW.DAT"
  7. 0029ef15  "T"
  8. 0029f034  "T"
  9. 0029f06a  "T"
  10. 0029f07a  "T"
  11. 0029f08a  "T"
  12. 0029f09e  "T"
  13. 0029f356  "TxSignDemo"
  14. 0029f7f0  "T.)"
  15. 0029f989  "Ti.."
  16. 0029fa50  "T.)"

注意place和{之间必须有空格!

现在从第三个开始,每隔一个显示一个:

  1. 0:000> .foreach/pS3 /ps1(place {s -[1]a  0029eeec  L1000 "T"}){da ${place}}
  2. 0029ef15  "T"
  3. 0029f06a  "T"
  4. 0029f08a  "T"
  5. 0029f356  "TxSignDemo"
  6. 0029f989  "Ti.."

InFile
/f 一起使用。指定要解析的文本文件;结果会传递给OutCommands 。文件名InFile 必须用引号括起来我们在C盘建立个2.txt,内容为:

  1. 0x0029eefb
  2. 0x0029ef03
  3. 0x0029ef0b
  4. 0x0029ef15
  5. 0x0029f034
  6. 0x0029f06a
  7. 0x0029f07a
  8. 0x0029f08a
  9. 0x0029f09e
  10. 0x0029f356
  11. 0x0029f7f0
  12. 0x0029f989
  13. 0x0029fa50

运行命令:

  1. 0:000> .foreach/f (place "c:\2.txt"){da ${place}}
  2. 0029eefb  "Tencent\TSVulFw\TSVulFW.DAT"
  3. 0029ef03  "TSVulFw\TSVulFW.DAT"
  4. 0029ef0b  "TSVulFW.DAT"
  5. 0029ef15  "T"
  6. 0029f034  "T"
  7. 0029f06a  "T"
  8. 0029f07a  "T"
  9. 0029f08a  "T"
  10. 0029f09e  "T"
  11. 0029f356  "TxSignDemo"
  12. 0029f7f0  "T.)"
  13. 0029f989  "Ti.."
  14. 0029fa50  "T.)"

InCommands 的输出、InString 字符串或InFile 被解析时,任何数量的空格、tab符或回车都将会被当作单个分隔符。文本被分隔成的小片段被用来替换OutCommands 中的Variable

/s 一起使用。指定一个要解析的字符串;结果会传递给OutCommands

  1. 0:000> .foreach/s (place "0029ef03;0029ef0b"){da ${place} }
  2. 0029ef03  "TSVulFw\TSVulFW.DAT"
  3. ^ Syntax error in 'da 0029ef03;0029ef0b '
  4. 0:000> .foreach/s (place "0029ef03 0029ef0b"){da ${place}}
  5. 0029ef03  "TSVulFw\TSVulFW.DAT"
  6. 0029ef0b  "TSVulFW.DAT"

所以,只是把空格,tab当成分隔符,不是分号!此原则适用于string和file

windbg-.foreach循环输入(windbg script)的更多相关文章

  1. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  2. 巧用array_map()和array_reduce()替代foreach循环

    1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...

  3. 程序控制结构及for循环、foreach循环、迭代器

    结构化程序设计 三种基本控制结构:顺序结构.选择结构.循环结构. 在这种思想的指导下,发展出了面向过程编程方式.面向过程编程的核心是算法+数据结构.算法可以用顺序.选择.循环这三种基本控制结构来实现. ...

  4. 可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  5. java——集合、泛型、ArrayList、LinkedList、foreach循环、模拟ktv点歌系统

    集合:一系列特殊的类,这些类可以存储任意类型的对象,长度可变,集合类都在java.util包中. 但是集合记不住对象的类型,当把对象从集合中取出时这个对象的编译类型就变成了Object类型.这样在取元 ...

  6. PHP数组foreach循环如何实现逆序访问?

    PHP数组foreach循环如何实现逆序访问? 一.总结 1.array_reverse($array) :foreach(array_reverse($array) as $key=>$val ...

  7. 项目遇到的问题:页面c:forEach循环的数据进行计算传回后台并保持到数据库

    应该还有更简单的方法 但是我不晓得 手动给文本框输入数据保存到数据库 A表 :通过订单编号 查询数据获得 B表 :通过A表中的字段查询遍历获得 问题: 手动输入文本框内容 保存到数据库 页面form提 ...

  8. java语法糖:(1)可变长度参数以及foreach循环原理

    语法糖 语法糖:是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用 ...

  9. for循环,for…in循环,forEach循环的区别

    for循环,for…in循环,forEach循环的区别for循环通关for循环,生成所有的索引下标for(var i = 0 ; i <= arr.length-1 ; i++){ 程序内容 } ...

随机推荐

  1. PHP使用DOM XML操作XML[总结]

    1.前言 XML树状层次结构鲜明,非常适合作为配置文件.PHP中可以使用DOM XML来操作XML.本文总结一下PHP使用DOM XML创建.添加节点.查询XML文件. 2.使用DOM XML XML ...

  2. Java:Linux上java -jar xxx.jar&java -cp 区别

    java -cp java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符:window上分号“;”.Lin ...

  3. 转: H264码流分析 --264分析两大利器:264VISA和Elecard StreamEye Tools

    转码: http://www.360doc.com/content/13/0225/19/21412_267854467.shtml ESEYE视频工具全称是什么: Elecard StreamEye ...

  4. Linux扩展文件分区

    **************操作之前请看章节6,看系统是否支持LVM分区管理方式*************** 1:新增磁盘 插入新的磁盘,比如物理机可以直接在卡槽插入,虚拟机可以在控制台添加磁盘或者 ...

  5. 安装QT的时候出现PATH_MAX错误

      运行c:\qt\4.5.0的configure文件的时候,出现如下的错误提示: ....\corelib\io\qfsfileengine_win.cpp(1012) : error C2065: ...

  6. GIF添加3D加速

    由于浏览器内核对Gif格式的图片会产生卡的情况,所以我们需要告诉浏览器,开启一下加速,方法很简单,就是利用css3的特性,强制告诉浏览器,这是个元素,需要3D转换,请务必开启加速效果 方法1 给gif ...

  7. OpenGL ES 3.0之Shading Language(八)

    每个OpenGL ES 3.0程序要求一个顶点着色器和一个片段着色器去渲染一个图形.着色器概念是API 的中心,本篇将介绍着色器语言部分包含下面几项 1.变量和变量类型 2.矢量和矩阵创建及选择 3. ...

  8. iredmail安装问题

    =================================== 已解决::::(据铭哥说 只有最新版0.9.2才会出现这个问题) 解决办法::(都是IPv6惹的祸) vi /etc/dovec ...

  9. 一起talk C栗子吧(第一百三十三回:C语言实例--创建进程时的内存细节)

    各位看官们.大家好,上一回中咱们说的是从内存角度看进程和线程的样例.这一回咱们说的样例是:创建进程时的内存细节.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们.我们都知道使用fork函数能 ...

  10. Linux下安装配置SNMP服务

    一.安装snmp服务 1.检查系统是否已经安装snmp的rpm包 以下是安装snmp服务需要的rpm包: libsensors3-2.10.6-55.el5.i386.rpm lm_sensors-2 ...