|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
16 楼』:
terse的代码错误原因是因为你的
第2部分字符的长度是不固定的,有些62,95的后面多2位。
(你最开始给的代码没有体现出这个特点,你的14的和13的一样长=.=)
但是感觉13的那些行应该对的呀~
建议你还是用VBS脚本,和VBA的代码差不多。不用打开EXCEL。
方法和那帖子一样。。。因为你格式固定,所以你判断第mid(linestr,26,2)
是不是"13",是替换成空,将55位那个空格换成3个空格,这样就不了1位。
再判断mid(linestr,26,1)是不是"-",是同样替换成空格,将55位的空格替换成2个空格,就补了1位。
|
|
2008-2-1 02:26 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
17 楼』:
把这个问题给你写个VBS脚本的例子:
Example.vbs:
Quote: | Const ForReading = 1 '设定打开文本方式为读取
Const ForWriting = 2 '设定打开文本方式为写入
Const ForAppending = 8 '设定打开文本方式为追加
Const InFile = "a.txt" '设定打开的文本
Dim StrLine,OutStr
Set objFSO = CreateObject("Scripting.FileSystemObject") '引用FSO对象,读写文件要用到的
Set objFile = objFSO.OpenTextFile(InFile, ForReading) '以读取方式打开InFile
Do Until objFile.AtEndOfStream
StrLine = objFile.ReadLine '读取一行
If Mid(StrLine,26,3) = "13-" Then
StrLine = Left(StrLine,25) & Mid(StrLine,29,27) & " " & Mid(StrLine,56)
ElseIf Mid(StrLine,26,2) = "13" Then
StrLine = Left(StrLine,25) & Mid(StrLine,28,28) & " " & Mid(StrLine,56)
End If
OutStr = OutStr & StrLine & vbCrLf
Loop
objFile.Close '关闭文件对象
OutFile = "sm" & FormatDate(Date) & ".txt"
Set objFile = objFSO.OpenTextFile(OutFile, ForWriting,True) '以写入方式打开OutFile
objFile.Write OutStr
objFile.Close '关闭文件对象
Set objFile = Nothing
Set objFSO = Nothing
Function FormatDate(tDate)
FormatDate = Right(Year(tDate),2) & AddZero(Month(tDate)) & AddZero(Day(tDate))
End Function
Function AddZero(sNum)
Addzero = Right("0" & sNum,2)
End Function |
|
脚本运行的结果表明,你的第一帖里的名字后面的空格少一位,不知道是不是这样。。。
|
|
2008-2-1 02:34 |
|
|
dhlmdsnw
初级用户
积分 127
发帖 59
注册 2008-1-29
状态 离线
|
『第
18 楼』:
看了slore大大回的帖,感觉自己真是太惭愧了。。。大大还在帮助我写代码。。。我自己却因为太冷,窝进被子了。。。——以后一定要学习slore大大这种诲人不倦,努力钻研的精神。。。
用了大大的代码,已经生成了我需要的格式(与我以前用VBA生成的格式是一样的),能否达到机器的要求,要下午才能知道。。。应该没问题。。。下午我会答复是否可以的。。。还请大大继续关注。。。。谢了先!
真的非常感谢slore大大的照顾!——大大也要继续关注我其他的帖子啊(后面还会再发的,因为现在正在努力学习中。。。。)
同时,我也为自己的知识欠缺感到惭愧。。。居然之前都不知道VBS,现在终于能够懂得VBA也能够还是能够有更多的应用,因为我看到大大写的vbs,感觉比较容易懂,跟我的VBA有共通的地方。
希望大大们继续关注我以后发的其他帖子。。。。
고 맙 습 니 다 !
|
|
2008-2-1 12:44 |
|
|
junchen2
高级用户
积分 537
发帖 219
注册 2007-8-4 来自 杭州--半山
状态 离线
|
|
2008-2-1 13:23 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
20 楼』:
Quote: | Originally posted by junchen2 at 2008-2-1 13:23:
gawk "{sub(/ 13-/,\" \");sub(/ 13/,\" \");print $0}" test.txt
其实一句话就可以基本搞定,^ ^
http://www.vkill.net/tools.html
里面 ... |
|
3方工具是会简化很多。
那我把a.txt作为参数。。。
1.vbs a.txt
不知道算不算半句话?
|
|
2008-2-1 13:27 |
|
|
junchen2
高级用户
积分 537
发帖 219
注册 2007-8-4 来自 杭州--半山
状态 离线
|
『第
21 楼』:
当然神在心中吗!你说是就是了。
|
|
2008-2-1 13:32 |
|
|
dhlmdsnw
初级用户
积分 127
发帖 59
注册 2008-1-29
状态 离线
|
『第
22 楼』:
先报告slore大大,你的代码没问题,用得效果很好!——实现秒杀了。。。嘿嘿。。。고 맙 습 니 다 !
另外,谢谢19楼的大大,我在测试中。。我也希望能够学到更多精华的东西。。。也希望大大回头能继续关注我其他的帖子,今晚还会再发一帖的(帖子标题已经想好了,先定为:据原始文件的固定标志给目标文件添加相应标志。。。嘿嘿。。。)
没办法人笨啊。。。学习中。。。
感谢大家支持与关注,本问题已解决,算是结帖了。
고 맙 습 니 다 !
|
|
2008-2-1 18:56 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
23 楼』:
Quote: | Originally posted by dhlmdsnw at 2008-1-31 21:53:
我弄整齐点,大大们容易看
原始文件如下:
1204120 13540901100139621 000000000250000 360424196403255318 周小荣 20080131000106301 ... |
|
其实 你改一下
echo !src!!src1:~0,30!%%k 就OK了
|
简单!简单!再简单! |
|
2008-2-2 22:05 |
|
|
dhlmdsnw
初级用户
积分 127
发帖 59
注册 2008-1-29
状态 离线
|
『第
24 楼』:
测试了。。。可以滴。。。谢谢terse大大。。。这两天怎么都没见你啊?
|
|
2008-2-3 02:04 |
|
|
pinghu
中级用户
积分 307
发帖 130
注册 2008-2-1
状态 离线
|
|
2008-2-3 16:36 |
|