|  | 
 
| xhuser 新手上路
 
  
 
 
 
 积分 2
 发帖 1
 注册 2007-4-20
 状态 离线
 |  | 
|  2007-5-12 21:05 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 17 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by abczxc at 2007-5-12 19:53:sed -n "/^/{N;p}" urfiles>dfile
 sed 好像是linux下的处理文本流的东东吧
 我不会安装,麻烦lxmxn大哥给个for windows 的sed我,
 好吗.
 
Linux 下的也可以在win下面使用啊。
 
发一个上来。 
 
 
 
 
 
 
附件
1:  sed.rar (2007-5-12 21:10, 40.33 KiB, 下载附件所需积分 1 点
,下载次数: 421) 
 |  | 
|  2007-5-12 21:10 |  | 
|  | 
 
| ebfok 初级用户
 
   
 
 
 
 积分 87
 发帖 33
 注册 2006-6-20
 来自 cs
 状态 离线
 | 
| 『第 18 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我也来试试:把所有以汉字开头的一行和它下面的一行写入另外一个文本Const ForReading = 1, ForWriting = 2
 Dim fso, f,ff
 Set fso = CreateObject("Scripting.FileSystemObject")
 File = InputBox("请输入要处理文件路径和名称:")
 Set f = fso.OpenTextFile(File, ForReading, True)
 out = ""
 Do While f.AtEndOfStream <> True
 line = f.ReadLine
 If f.AtEndOfStream <> True Then
 If Asc(Left(line,1))<0 Or Asc(Left(line,1))>255 Then
 out = out & line & vbCrLf & f.ReadLine & vbCrLf
 End If
 Else
 out = out & line & vbCrLf
 End If
 Loop
 f.Close
 Set ff = fso.OpenTextFile(File & "_new.txt", ForWriting, True)
 ff.Write (out)
 ff.Close
 Msgbox "已生成新文件:" & File & "_new.txt!"
 测试通过,请不要加行号!
 将代码保存为filter.vbs再双击执行后输入你要处理的文件路径和名称如c:\windows\myfile.txt即可!
 
 Last edited by ebfok on 2007-5-12 at 09:28 PM ]
 
 
 
 
 
 
 |  | 
|  2007-5-12 21:19 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 19 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Const ForReading = 1, ForWriting = 2Dim fso, f,ff
 Set fso = CreateObject("Scripting.FileSystemObject")
 File = InputBox("请输入要处理文件路径和名称:")
 Set f = fso.OpenTextFile(File, ForReading, True)
 out = ""
 Do While f.AtEndOfStream <> True
 line = f.ReadLine
 ''If f.AtEndOfStream <> True Then  '这个条件句是废的……
 If Asc(Left(line,1)) < 0 or Asc(Left(line,1)) > 255 Then  '小于0就是汉字了吧?
 out = out & line & vbCrLf & f.ReadLine & vbCrLf
 End If
 ''Else
 ''    out = out & line & vbCrLf
 ''End If
 Loop
 f.Close
 Set ff = fso.OpenTextFile(File & "_new.txt", ForWriting, True)
 ff.Write out
 ff.Close
 MsgBox "已生成新文件:" & File & "_new.txt!"
 Set f=nothing
 Set fso =nothing
 
 
 
 
 |  | 
|  2007-5-12 22:19 |  | 
|  | 
 
| ebfok 初级用户
 
   
 
 
 
 积分 87
 发帖 33
 注册 2006-6-20
 来自 cs
 状态 离线
 | 
| 『第 20 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by slore at 2007-5-12 22:19:Const ForReading = 1, ForWriting = 2
 Dim fso, f,ff
 Set fso =
 
 那个条件句真的是废的吗?你恐怕没实验过那段代码吧!一开始我也是没加这个判断的,可是执行不了!后来几番调试才领悟到:DO...LOOP循环之间有两次读行操作,试想,经过干次循环,读到文件只剩最后一行的时候,此时因没有到达文件尾,还是会进入DO..LOOP循环,执行完循环中的第一次读行操作后,文件就到尾了!这时,如果不加判断语句,程序试图再读下一行,就会报错!!不知道说清楚没有,你还是做下实验吧,如果不加判断语句,根据文件行数的不同,程序可能会报错也可能不会报错!可能还有更妥当的解决方法也不一定
 
 Last edited by ebfok on 2007-5-13 at 09:24 AM ]
 
 
 
 
 |  | 
|  2007-5-13 09:09 |  | 
|  | 
 
| ebfok 初级用户
 
   
 
 
 
 积分 87
 发帖 33
 注册 2006-6-20
 来自 cs
 状态 离线
 | 
| 『第 21 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
汉字的码的范围我不清楚,只随便找了几个汉字实验,反正汉字不可能在0-255之间就是,所以。。(恳请哪位知道的告知一下汉字的识别方法!)再顺便问一下你用的什么vbs编辑器?
 
 Last edited by ebfok on 2007-5-13 at 09:19 AM ]
 
 
 
 
 |  | 
|  2007-5-13 09:15 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 22 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
明白你的意思了。。。但是你逻辑还是有问题。。报错是因为你又用了了次f.readline
 所以第一的line是肯定可以读到的。你这个判断句应当在下面的判断句里面。
 
 这样也一样……
 
 要这种格式的文本应该是成对的……不然偷个懒加on Error Resume Next
 
 
 
 
 |  | 
|  2007-5-13 09:22 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 23 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
一般脚本就直接用记事本,复杂点需要调试就扔VB里检测汉字的ASC码是负的……而且根据ASC码的范围可以确定它的声母
 
 实在不确定我觉得可以用排除法如果instr(0~9,a~z,A~Z。。再把标点算上)
 就知道它是不是了。
 
 
 
 
 |  | 
|  2007-5-13 09:27 |  | 
|  | 
 
| ebfok 初级用户
 
   
 
 
 
 积分 87
 发帖 33
 注册 2006-6-20
 来自 cs
 状态 离线
 | 
| 『第 24 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
之所以用两次readline是按LZ的要求:把所有以汉字开头的一行和它下面的一行写入另外一个文本。如果能进入DO..LOOP循环,第一次readline是肯定能读到,问题是第二次就不一定了,一开始我也是想要加个on Error Resume Next,后来不知怎么就忘了,现在想来要是加了on Error Resume Next就不会报错就不会想到要加那个条件句,看样子还是不加on Error Resume Next的好! 
 
 
 
 |  | 
|  2007-5-13 09:33 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 25 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
当然先是不加。。。。找到错误知道错误原因后发现就是最后一次读取不存在导致的。。在VB里都是GOTO ERRLINE看下ERR.DESCRIPTION调试好了,再考虑是用哪个比较好。 
 
 
 
 |  | 
|  2007-5-13 09:38 |  | 
|  | 
 
| ebfok 初级用户
 
   
 
 
 
 积分 87
 发帖 33
 注册 2006-6-20
 来自 cs
 状态 离线
 | 
| 『第 26 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我学脚本都是小打小闹,大部分时候用的notepad,出了错没想到借助工具进行调试,所以每次出了错都是百思不得其解,效率很低,这次见识到兄的调试经验,很有启发,以后我会学着在vb中调试的!I like this forum! 
 
 
 
 |  | 
|  2007-5-13 09:47 |  | 
|  | 
 
| slore 铂金会员
 
        
 
 
 
 积分 5212
 发帖 2478
 注册 2007-2-8
 状态 离线
 | 
| 『第 27 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
要是调试VB的话下个精简版就好了6MB大小……
 VB和脚本还是有些差别,比如读取文本在工程里VB要用绝对路径。。。。不然找不到文件。。。
 
 VB里主要可以F8单步执行,就可以一句句看。。。代码的流程和变量的赋值都一清二楚。
 
 
 
 
 |  | 
|  2007-5-13 10:13 |  | 
|  | 
 
| bhsx 初级用户
 
   
 
 
 
 积分 43
 发帖 21
 注册 2007-5-1
 状态 离线
 | 
| 『第 28 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
findstr /r /n "." 1.txt >1.tmpfor /f "delims=:" %%i in ('findstr /r /i /v "*:" 1.tmp') do call:LLL %%i
 
 for /f "tokens=1,2 delims=:" %%i in (2.tmp) do echo %%j >>2.txt
 del 1.tmp
 del 2.tmp
 2.txt
 goto:eof
 :LLL
 set /a jk=%1+1
 findstr /r "^%1: ^%jk%:" 1.tmp >>2.tmp
 set jk=
 
 Last edited by bhsx on 2007-5-13 at 06:00 PM ]
 
 
 
 
 |  | 
|  2007-5-13 17:32 |  | 
|  | 
 
| abczxc 初级用户
 
   
 
 
 
 积分 135
 发帖 53
 注册 2007-4-28
 状态 离线
 |  | 
|  2007-5-13 18:50 |  | 
|  | 
 
| abczxc 初级用户
 
   
 
 
 
 积分 135
 发帖 53
 注册 2007-4-28
 状态 离线
 | 
| 『第 30 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
谢谢楼上的同志啊If Abs(Asc(whichChar))>127 Then
 Response.write whichChar & "是一个汉字"
 Else
 Response.write whichChar & "不是一个汉字"
 
 
 
 
 |  | 
|  2007-5-13 19:05 |  |