【问题标题】:Delete block of text before saving output in batch file在将输出保存到批处理文件之前删除文本块
【发布时间】:2016-10-24 06:21:33
【问题描述】:

我试图在保存输出之前删除一段文本。它是一个批处理脚本。有很多不必要的数据需要从输出中删除。我正在使用findstr /v 删除匹配的文本,但遗憾的是无法接收到所需的输出。

当前输出:

shdgs - 版权所有 (c) 1989-2006 hsagd asjgdjasgd 和/或 hsgdhgas。全部 保留权利。 hashjasdsadasdasd 于 2016 年 10 月 24 日星期一 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 于 2016 年 10 月 24 日星期一 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

我们怎样才能有效地删除选中的文本?

谢谢。

【问题讨论】:

  • findstr /r "license v7.0" test.txt
  • 是文件中的文本,还是命令输出?顶行是否每次都相同数量?您可以使用for /f 跳过顶部的行。您想要的线条是否有可以搜索的独特内容?为什么findstr /v 不起作用?
  • 你自己尝试过什么?请分享你的努力!否则这不是一个真正的问题,而是一个任务请求,这里是题外话......

标签: batch-file cmd


【解决方案1】:

至少基于您的某些文字是真实的:

@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 行和第 4 行括号内的路径以适合您的目的。

如果您希望在新的最后一行重命名 "%DstFile""%SrcFile%",请随意所以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多