批量删除文本文件中的行

时间:2014-01-01 14:27:51

标签: batch-file text vbscript

我有一个包含数百个文本文件的文件夹(文件扩展名实际上是.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& amp;替换',但我能得到的最好的是:

[HotkeysActive]



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

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

非常感谢,

马丁

3 个答案:

答案 0 :(得分: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

的文件

我建议你先对一小部分进行测试......

答案 1 :(得分:0)

Text = Replace(Text,vbcrlf,“”) Text = Replace(Text,chr(13),“”)

答案 2 :(得分:0)

文件看起来像是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