从而得到“干净”的几千个新文件
本人做的尝试:
鉴于要保留的行都有“+”,于是想到:
for /r %%i in (*.lvm) do find "+" %%i>%%i
发现每个文件被替换为类似
---------- xxx.LVM
的内容。
后来想到改为
for /r %%i in (*.lvm) do find "+" %%i>%%i.res
res表示结果"result",
但是有两个问题:
1.文件扩展名改了,不合要求;
2.每个文件的开头还是有
---------- xxx.LVM
请高手帮我解决这两个问题,先谢了!
[ Last edited by ebfok on 2007-5-10 at 04:17 PM ]作者: bhsx 时间: 2007-5-10 13:06 for /r %%i in (*.lvm) do call :skip %1
:skip
for /f "skip=20" %%i in (%1) do echo %%i >>%~n1%.res
不知道很不很......
[ Last edited by bhsx on 2007-5-10 at 03:37 PM ]作者: zhoushijay 时间: 2007-5-10 13:08 findstr "+" *.lvm>new.lvm作者: zhoushijay 时间: 2007-5-10 13:13 完整的代码,假设文件都在C盘
@echo off
for /f "delims=" %%i in ('dir /s /b /a-d c:\*.lvm') do (
[ Last edited by zhoushijay on 2007-5-10 at 02:23 PM ]作者: ebfok 时间: 2007-5-10 16:15 %%~ni1.lvm,受教了!问题解决了!!感谢zhoushijay兄!!!
另外通过我3个小时的艰苦奋斗,也用vbs实现了:
Const ForReading = 1, ForWriting = 2
Dim fso, f,fn
fn=0
Set fso = CreateObject("Scripting.FileSystemObject")
Sub cut (Files)
For Each File In Files
Ext = fso.GetExtensionName(File)
If Ext = Extname Then
Set f = fso.OpenTextFile(File, ForReading, True)
For i = 1 To 20
f.SkipLine
Next
fleft=f.ReadAll
f.Close
Set f = fso.OpenTextFile(File, ForWriting, True)
f.Write fleft
f.Close
fn = fn + 1
End If
Next
End Sub
dd = InputBox("请输入文件所在总目录的路径","FilesCutter")
If dd <> "" Then
Extname = InputBox("请输入要执行处理的文件的扩展名" & vbCrLf & "默认为lvm" & vbCrLf & "请不必输入点号!","FilesCutter","lvm")
StartTime = Timer
Set Folder = fso.GetFolder(dd)
Set Files= Folder.Files
cut Files
Set sf=Folder.SubFolders
For Each Folder In sf
Set Files = Folder.Files
cut Files
Next
EndTime = Timer
TimeIt = EndTime - StartTime
Msgbox "执行完毕!" & vbCrLf & "耗时:" & TimeIt & "秒" & vbCrLf & "处理文件总数:" & fn"
Else
MsgBox "您已经取消执行或者输入为空,程序将停止!请再次执行!"
End If作者: lxmxn 时间: 2007-5-10 17:02 我也来玩一把,没有测试。