我有一个包含数百个文本文件的文件夹(文件扩展名实际上是.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?
非常感谢,
马丁
答案 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