在批处理文件中保存输出之前删除文本块

时间:2016-10-24 06:21:34

标签: batch-file cmd

我想在保存输出之前删除一段文本。它是一个批处理脚本。需要从输出中删除许多不必要的数据。我使用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

我们如何有效地删除所选文本?

感谢。

1 个答案:

答案 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%”,请随时执行如此。