批处理学习11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
批处理学习11
下面,我们先看一这个命令 Tasklist 的具体语法:
我们先运行一下Tasklist,效果如下:
在这里,我们看到,第一行是列名称,第二行是“=”符号,这些是我们不需要的,所以在批处理中“for /F "skip=2 usebackq delims=, tokens=1" %%a in ......”,我们使用参数skip=2来跳过这两行。
那么,本示例中为什么要使用“ delims=,”呢?为什么使用“ %%~a”呢?这是因为 Tasklist 的/FO CSV输出方式引起的。
我们先来看一下这个转换过程:
由于在Tasklist 的/FO CSV输出时,列之间是用逗号“ ,”分隔的,各列的数值又都被用引号“ ""”括起来,所以,我们对这些进行处理。
使用“ delims=,”对结果进行分割,分割后图象名(进程名)被分割在第一列,使用参数tokens=1来截取列的范围,第一列图象名即进程名称,并将他们赋给变量%%a。
在“set %2_Proc_Name=%%~a”进行赋值的时候,使用“ %%~a”来去除图象名(进程名)外的引号。
下面,我们来讲一下和“%%~a”有关的语法:
在这里,我们可以看到每行都有一个大写字母“ I”,这个I其实就是我们在FOR 带入的变量,我们FOR 语句代入的变量名是什么,这里就写什么。
那么“ %~I”是做什么的呢?就是“展开删除任何前后引号 ("") 的%I。
”!对于本示例,变量%%a中的进程名是外括有引号的,而我们在显示他们的时候,不希望这些引号出现,怎么去除呢?使用%%~a。
所以,在赋值“ set %2_Proc_Name=%%~a”的时候,引号就被被自动删除了。
至于其他的变量替换,在下面的示例中,来演示一下:
说明:上面例子中的"delims=="可以改为"delims=",即不要分隔符。
最后,再讲一下“goto :eof”,这个命令一般用在 call 所调用的子批处理或标签的结尾。
那么他在什么情况下才必须使用呢?当然,本示例中出于语法规范的因为,将他加上了,实际上对于本示例,他是可以不用加进去的。