【问题标题】:Batch delete lines in text files批量删除文本文件中的行
【发布时间】:2014-01-19 02:42:58
【问题描述】:

我有一个包含数百个文本文件的文件夹(文件扩展名实际上是 .pro,但它们是响应方式与 .txt 相同的文本格式文件),名称各不相同。它们都包含这些行,位于文件的中间:

[HotkeysActive]
Hotkey22=1
Hotkey23=1
Hotkey24=1
Hotkey1=1
Hotkey2=1  ..... etc.

我正在尝试批量处理,以便他们都阅读:

[HotkeysActive]
Hotkey1=1
Hotkey2=1  ..... etc.

即删除行 Hotkey22=1, Hotkey23=1 & Hotkey23=1

在这方面不是很流利,也没有在这里找到任何可以提供有效答案的线程,我求助于“InfoRapid Search & Replace”软件的帮助,但我能做到的最好的是:

[HotkeysActive]



Hotkey1=1
Hotkey2=1  ..... etc.

理想情况下,我现在希望删除那些空白行,以实现第二个示例:任何人都可以帮助我使用批处理或 vbs 脚本,该脚本将在部分处理后删除三个空白行,或删除三个 Hotkey22=1 , Hotkey23=1 & Hotkey23=1 在第一个例子中?

非常感谢,

马丁

【问题讨论】:

  • 我假设您的意思是 Hotkey22,23 和 24 - 而不是您发布的 23 两次(两次)
  • 当您说Hotkey22=1 等时,这是文字还是它们可以是任何数字集?喜欢Hotkey=3Hotkey=435

标签: batch-file text vbscript


【解决方案1】:
@ECHO OFF
SETLOCAL
FOR %%i IN (*.pro) DO (
 TYPE "%%i"|FINDstr /l /v "Hotkey22=1 Hotkey23=1 Hotkey24=1" >"%%~ni.new"
)
GOTO :EOF

这应该会处理您的文件生成 samename.new

我建议您先针对一个小子集对其进行测试...

【讨论】:

    【解决方案2】:

    文本 = 替换(文本,vbcrlf,“”) 文本 = 替换(文本,字符(13),“”)

    【讨论】:

      【解决方案3】:

      这些文件看起来像是 INI 文件格式,因此您可以将每个文件 parse 放入字典字典中:

      Set fso = CreateObject("Scripting.FileSystemObject")
      
      For Each f In fso.GetFolder("C:\some\folder").Files
        If LCase(fso.GetExtensionName(f)) = "pro" Then
          Set data = ParseIni(f.Path)
          ...
        End If
      Next
      

      删除过时的条目:

      data("HotkeysActive").Remove("Hotkey22")
      data("HotkeysActive").Remove("Hotkey23")
      ...
      

      并将修改后的数据写回文件:

      Set output = f.OpenAsTextStream(2)
      For Each key In data.Keys
        output.WriteLine "[" & key & "]"
        For Each val In data(key).Keys
          output.WriteLine val & "=" & data(key)(val)
        Next
        output.WriteLine
      Next
      output.Close
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-07
        • 1970-01-01
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-11
        • 1970-01-01
        相关资源
        最近更新 更多