我想在保存输出之前删除一段文本。它是一个批处理脚本。需要从输出中删除许多不必要的数据。我使用findstr /v
删除匹配的文本,但遗憾的是无法接收所需的输出。
当前输出:
shdgs - 版权所有(c)1989-2006 hsagd asjgdjasgd和/或hsgdhgas。所有 保留的权利。 hashjasdsadasdasd on Mon 10/24/2016 07:53
[hjasgdjaghsdh ...] ajsgdjasgdajs: jasdjkasjdkhasjkh:C:\ test \ test \ test \ lic.dat:
jasbdjadsb:sadfsadfsdfadfsadf
供应商守护程序状态(在asdasad上):
sadfsadf: UP v10.8
259的用户:(共颁发8个许可证;共有4个许可证 使用)
“259”v5.8,供应商:ptc_d浮动许可证
876347634 dfdhgdhf khdskhf (v7.0) (sdfsdf/6784 601), start Mon 10/24 6:42 abcd sdsdfsfd gfdfgdd (v7.0) (fdgdfgdf/6554 211), start Mon 10/24 6:02
我要求只删除以下文字:
shdgs - 版权所有(c)1989-2006 hsagd asjgdjasgd和/或hsgdhgas。所有 保留的权利。 hashjasdsadasdasd on Mon 10/24/2016 07:53
[hjasgdjaghsdh ...] ajsgdjasgdajs: jasdjkasjdkhasjkh:C:\ test \ test \ test \ lic.dat:
jasbdjadsb:sadfsadfsdfadfsadf
供应商守护程序状态(在asdasad上):
sadfsadf: UP v10.8
最终输出:
259的用户:(共颁发8个许可证;共有4个许可证 使用)
“259”v5.8,供应商:ptc_d浮动许可证
876347634 dfdhgdhf khdskhf (v7.0) (sdfsdf/6784 601), start Mon 10/24 6:42 abcd sdsdfsfd gfdfgdd (v7.0) (fdgdfgdf/6554 211), start Mon 10/24 6:02
我们如何有效地删除所选文本?
感谢。
答案 0 :(得分:2)
基于至少部分文字是真实的:
@Echo Off
(Set SrcFile=C:\test\test\test\lic.dat)
(Set DstFile=C:\test\test\test\fixedlic.dat)
Set "LNR="
For /F "Delims=" %%A In ('FindStr/BNC:"Users of " "%SrcFile%"') Do (
If Not Defined LNR Set "LNR=%%A")
Set/A LNR-=1
More +%LNR% "%SrcFile%">"%DstFile%"
只需更改第3行和第3行括号内的路径即可。 4,以满足您的目的。
如果您希望在新的最后一行重命名 “%DstFile”到“%SrcFile%”,请随时执行如此。