.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. 教程 | Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测

    https://mp.weixin.qq.com/s/JwRXBNmXBaQM2GK6BDRqMw 选自GitHub 作者:Artur Suilin 机器之心编译 参与:蒋思源.路雪.黄小天 近日,A ...

  2. 介绍一些有趣的MySQL pager命令

    一.分页结果集 在Linux系统中中,我们经常也会使用一些分页查看命令,例如less.more等.同样,MySQL客户端也提供了类似的命令,用来帮助我们对查询结果集进行分页.比如,SHOW ENGIN ...

  3. JAVA 中不错的开源FTP组件:commons-net

    第一步:引入jar到pom.xml. <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dep ...

  4. 怎样在一个项目里用logger在控制台打印信息

    第一步: 导入jar包,maven项目可以直接添加 <dependency><groupId>log4j</groupId><artifactId>lo ...

  5. java实现高性能的数据同步

    最近在做一个银行的生产数据脱敏系统,今天写代码时遇到了一个“瓶颈”,脱敏系统需要将生产环境上Infoxmix里的数据原封不动的Copy到另一台 Oracle数据库服务器上,然后对Copy后的数据作些漂 ...

  6. Ext JS isField为空或不是对象问题的解决

    在做Ext Js的DataGrid的时候经常会遇到这种问题,火狐谷歌没有问题,IE8及以下版本就无法通过,经调试会提示: “isField为空或不是对象问题的解决” 这通常是我们在js代码中多加了一个 ...

  7. (纪录片)现代生活的秘密规则:算法 The Secret Rules of Modern Living: Algorithms

    简介: The Secret Rules of Modern Living: Algorithms (2015) 导演: David Briggs主演: Marcus du Sautoy类型: 纪录片 ...

  8. 通过16道练习学习Linq和Lambda

    http://kb.cnblogs.com/page/73528/ 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class fro ...

  9. 转:nginx基础概念(connection)

    在nginx中connection就是对tcp连接的封装,其中包括连接的socket,读事件,写事件.利用nginx封装的connection,我们可以很方便的使用nginx来处理与连接相关的事情,比 ...

  10. python 爬虫资料

    API Requests PyQuery http://www.tuicool.com/articles/UZrmUb2 http://blog.csdn.net/cnmilan/article/de ...