图像服务管理工具
版本:10.0.17763.1
图像版本:10.0.17763.253
功能列表:
功能标识:Browser.InternetExplorer ~~~~ 0.0.11.0
状态:不存在
功能标识:Hello.Face.17658 ~~~~ 0.0 .1.0
状态:已安装的
功能特性:Hello.Face.Migration.17658 ~~~~ 0.0.1.0
状态:已安装的
功能特性:Language.Basic ~~~ AF-ZA〜0.0.1.0
状态:不适用
我想输出下一行包含的行Status: Installiert
。
我知道如何找到包含 string 的行Installiert
,但不知道如何在匹配之前包含整行。
写入批处理文件的此命令行可用于此任务:
@for /F "usebackq delims= eol=" %%I in ("TextFile.txt") do @for /F "tokens=2 eol= delims=: " %%J in ("%%~I") do @if "%%~J" == "Installiert" (call echo(%%Line%%) else set "Line=%%I"
外部FOR解释"
为行尾字符。因此,以 开头的"
行将被外部FOR忽略。
内部FOR将空格字符解释为行尾字符,这在这里无关紧要,因为空格字符也是分隔符。行拆分首先由FOR完成,导致从行首删除所有空格和冒号,因此空格作为行尾字符在这里没有问题。
感谢aschipfl提供有关上面两个带有指定选项的FOR如何处理指定文本文件中的行的附加信息。
更好的是:
@for /F usebackq^ delims^=^ eol^= %%I in ("TextFile.txt") do @for /F "tokens=2 delims=: eol=" %%J in ("%%~I") do @if "%%~J" == " Installiert" (call echo(%%Line%%) else set "Line=%%I"
外部FOR使用字符串分隔符的空列表和没有行尾字符运行。内部FOR也没有行尾字符运行,但只有冒号作为字符串分隔符,这是字符串开头的空格字符进行比较的原因。
使用TextFile.txt
当前目录中包含已发布行的文件执行时的两个命令行输出:
Funktionsidentität : Hello.Face.17658~~~~0.0.1.0
Funktionsidentität : Hello.Face.Migration.17658~~~~0.0.1.0
要了解使用的命令及其工作原理,请打开命令提示符窗口,在那里执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
call /?
echo /?
for /?
if /?
set /?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句