我有一个 txt 文件,我想只保留其中的几行
我想要一个命令来改变这个
txt 文件:
;FFMETADATA1
title=TNT
disc=01
comment=
lyrics-eng=
\
\
\
album=Classic
genre=Older
artist=ACDC
encoder=Lavf59.17.102
进入这个:
;FFMETADATA1
title=TNT
encoder=Lavf59.17.102
我使用了这个链接中的命令:
仅保留 txt 文件中包含特定单词/字符的行 (Powershell)(Windows 批处理文件)
PowerShell -Command "gci *.txt | foreach { (cat $_.FullName | ? { $_ -like '*;FFMETADATA1*' }) | set-content $_.FullName}"
但txt文件是这样的:
;FFMETADATA1
如何使用命令使txt文件有行;FFMETADATA1 title=和encoder=?
你的命令基本上是正确的,或者说你走在正确的道路上。但
-like
你应该使用-match
and 正则表达式。'METADATA|title|encoder'
将返回 txt 中与 3 个字符串中的任何一个匹配的任何行。所以命令是:如果你想创建一个新文件:
如果要将其保存在同一个文件中:
对于目录中的所有文件:
如果我们要进行代码高尔夫,我们甚至可以通过删除
? (Where-Object)
( 并使用sc
forset-content
- 你实际上不应该使用太多别名来缩短它,因为它会使内容更难阅读,但我现在已经在代码高尔夫了,我不能停止)更具体地说,您可以随时调整正则表达式。例如:
';FFMETADATA1|title=TNT|encoder=Lavf59.17.102'
如果您的正则表达式变得难以阅读,请让 PowerShell 为您创建它
编辑:根据 OP 的请求 - 如何通过 cmd 和隐藏的 PS 窗口运行它:
您可以使用以下脚本来获得您想要的内容。要么将其保存到 .ps1 文件并执行,要么直接将其粘贴到 powershell 中并按 Enter。
不要忘记编辑路径。
为此,使用 PowerShell 比 Batch 更容易。
- 快捷方式
- 没有备份
- 带备份
他们的输出: