教程:如何用UltraEdit32实现文本数据多文件自动批处理
前些天在帖子中给大家示范了如何用UltraEdit32的列块模式批量修改单个文本数据供飞狐导入的方法(针对飞狐可识别的分时文本数据中小时和分钟之间批量加入冒号的问题),但是缺点是只能逐个修改文本数据,如果碰到要修改的数据文件较多,又不能控制数据源文本数据的格式(不能生成单文件多证券格式的文本数据),只能一只股票一个文件的生成,这样,在修改的时候会相当的麻烦(比如要导入飞狐上万只美股的分时数据),那有没有方法让UltraEdit32来进行批量的自动操作呢?经过本人的刻苦钻研,终于找到让UltraEdit32批量自动操作的方法(用批处理文件加载UltraEdit32的命令行执行"宏"操作),现以修改一分钟数据的方法为例,介绍给大家,大家可以举一反三。如果还不会用UltraEdit32的列块模式修改文本数据的朋友请先参考此贴http://bbs.macd.cn/viewthread.php?tid=307311&fpage=2
强烈建议:如果文本数据文件很多,建议您先用2、3个做一下测试,成功后再大规模批量修改,以免执行.bat的批处理文件时,如果记录的宏中出现错误或有其他不对的地方,引起不必要的麻烦(请提前备份文本数据,以备批量操作有错误时覆盖回来)。
在开始之前,和大家约定一些路径,大家照此操作前请先在C盘建立如下的文件夹C:\TEMP(用于存放"宏"文件),C:\TXTMIN1(用于存放1分钟文本数据),以后所说的TEMP和TXTMIN1文件夹均指的是这2个文件夹,后面不再赘述。
有时用外软或在网上下载的文本数据格式是这样的,日期中年份是2位,时间中的小时和分钟之间没有冒号,而飞狐所能识别的格式是年份是4位,时间中小时和分钟之间有冒号":",本文例子中要被修改的文本数据格式如下:
031114,0931,5.10,5.11,5.10,5.10,167.00,85236.00
031114,0932,5.10,5.10,5.10,5.10,0.00,0.00
031114,0933,5.10,5.11,5.10,5.11,32.00,16338.00
031114,0934,5.11,5.11,5.11,5.11,2.00,1022.00
031114,0935,5.12,5.12,5.12,5.12,5.00,2560.00
031114,0936,5.12,5.12,5.12,5.12,15.00,7680.00
031114,0937,5.11,5.13,5.11,5.13,51.00,26104.00
031114,0938,5.12,5.13,5.12,5.13,45.00,23045.00
031114,0939,5.14,5.14,5.12,5.14,45.00,23097.00
031114,0940,5.13,5.15,5.13,5.14,41.00,21075.00
031114,0941,5.14,5.15,5.14,5.15,77.00,39629.00
031114,0942,5.15,5.15,5.14,5.14,44.00,22625.00
031114,0943,5.15,5.15,5.14,5.14,51.00,26232.00
首先,用UltraEdit32打开一个要修改的文本数据文件,一定先要把光标定位在第一行的第一个字符处,然后打开"宏"菜单,点击“录制宏”,在弹出的对话框中输入宏名称(TXT2FH),然后点击“确定”见图,之后不要做任何操作,继续看下一贴。
[ Last edited by jasonkguan on 2003-11-17 at 00:21 ] 先选择列块模式(见图),然后按住Shift键后,再按住小键盘旁边4个方向箭头的下箭头,把直线一直拉到最后一行,见图: 然后输入20,这时,所有的行前都加入了20,日期中的年份由03变成2003 这时,先松开下箭头,再松开Shift键,用向右的箭头把光标移动到时间的小时和分钟之间,见图: 然后按住Shift键,再按住向上的箭头把光标移动到最上面的第一行,先松开向上的箭头,然后再松开Shift键,这时可以看到所有的行,在小时和分钟之间都拉了一条直线 然后输入冒号":"注意,一定要是英文状态下的冒号,而不是中文的“:”,可以看到所有的行都加入了冒号,然后按住Ctrl键,再按一下S键(即保存),最后,点击“宏”菜单——停止录制宏(注意:以上修改年份和冒号的操作一定要用键盘完成,UltraEdit32中的宏不能记录鼠标的操作,修改时不要用鼠标拖动滚动条到第一或最后一行) 再次点击“宏”菜单,保存所有宏,将其保存为TXT2FH在C:\TEMP下,然后关闭UltraEdit32退出。 打开飞狐,导出您准备导入分时数据的美股或外汇的代码表,用UltraEdit32的列块模式去掉除代码以外的所有文字,在所有代码前加入市场代码,例如上海市场应为SH,外汇市场应为WH等,然后再用列块模式在所有行的前面加入“uedit32 / c:\txtmin1\”(不包括引号,但包括空格,所有标点为英文状态下的标点),在所有行的代码后加入.txt /m,e,1="c:\temp\test.mac"(包括引号和空格,所有标点为英文状态下的标点),使其修改为如下的格式:
uedit32 / c:\txtmin1\SH1A0001.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0002.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0003.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0004.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0005.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0006.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0007.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0008.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0009.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1A0010.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0001.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0002.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0004.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0005.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0006.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0007.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0008.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0009.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0010.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0012.txt /m,e,1="c:\temp\txt2fh.mac"
uedit32 / c:\txtmin1\SH1B0013.txt /m,e,1="c:\temp\txt2fh.mac"
然后存盘退出,修改文件名为TXT2FH.bat,最后一步,把TXT2FH.bat文件复制到C:\Program Files\UltraEdit目录下。
这时,把您下载或从外软导出的文本数据全部移动到C:\txtmin1目录下后,用下面附件中的批量文件更名器,把所有的文件名都改为“市场代码+股票代码.txt”的格式(例如外汇的EURUSD.TXT改为WHEURUSD.TXT,上海的600015.txt改为SH600015.txt),回到C:\Program Files\UltraEdit目录里执行TXT2FH.bat文件,您就会发现,系统会打开UltraEdit32后自动执行宏操作,再自动关闭,如此循环(见图),直至最后一个文件执行完毕后,您再打开C:\txtmin1目录下的文本数据,会发现,已经全部按照飞狐能够识别的格式修改好了,这时,就可以在飞狐中指定此文件夹,批量导入您需要的文本格式的分时数据了:)
强烈建议:如果文本数据文件很多,建议您先用2、3个做一下测试,成功后再大规模批量修改,以免执行.bat的批处理文件时,如果记录的宏中出现错误或有其他不对的地方,引起不必要的麻烦。 另,对于一些代码不规范的代码表来说,可以这么修改:
将代码以外的文字都删除后,首先找到最长的代码,点一个空格后,在以此行为起点用列块模式至第一行拉线后加入.txt /m,e,1="c:\temp\test.mac"(包括引号和空格,所有标点为英文状态下的标点),至最后一行拉线后加入.txt /m,e,1="c:\temp\test.mac"(包括引号和空格,所有标点为英文状态下的标点),前面加入的字符不变,然后存为BAT文件。其实就是在代码短的后面多加了空格,便于批量操作,UltraEdit32可以识别,我已测试AS市场通过(其他市场不规范格式的代码同理)。格式见图:
[ Last edited by jasonkguan on 2003-11-17 at 01:06 ] 版主,辛苦了!谢谢!已收藏。 Originally posted by shouping at 2003-11-17 10:34:
版主,辛苦了!谢谢!已收藏。
不谢:)
如果您以后用到了,有什么问题可以跟贴,欢迎讨论:)
一本好的说明书
我在别人的电脑上,所以不能试,我相信你的办法的正确性,但可能电脑的文件处理的工作时间会很长,看你的DOS屏幕,好象是一个文本文件一次“启动程序-程序工作-关闭程序”,这样就要有近万次的过程,真的有万次的时候,我担心BAT程序会不工作。这个问题我再想想,或许我多虑了, Originally posted by amkr1015 at 2003-11-17 12:12:我在别人的电脑上,所以不能试,我相信你的办法的正确性,但可能电脑的文件处理的工作时间会很长,看你的DOS屏幕,好象是一个文本文件一次“启动程序-程序工作-关闭程序”,这样就要有近万次的过程,真的有万次的 ...
我确实没有试过操作近万次的情况,不过这和BAT文件应该关系不大,主要是看打开的UltraEdit32退出时是否释放了内存,如果用XP的话应该问题不大。
本来想用UltraEdit32内部打开多个文件自动加载宏来操作,但他只支持第一个打开的文件,从第二个开始,要手工执行宏操作,等于没用一样,只好用这个办法了,确实是慢点:(
[ Last edited by jasonkguan on 2003-11-17 at 12:35 ] 可以用c,vf等写一小程序实现 Originally posted by 股市舞者 at 2003-11-17 16:46:
可以用c,vf等写一小程序实现
呵呵,您可别笑我,我对编程是一点都不懂,才想的这个笨办法:*3*: Originally posted by jasonkguan at 2003-11-18 08:35 AM:
呵呵,您可别笑我,我对编程是一点都不懂,才想的这个笨办法:*3*:
没有笑斑竹的意思。
我原先也喜欢用宏和批处理做这种工作。后来发现学点编程可以简化自己许多工作,挺好的。 Originally posted by 股市舞者 at 2003-11-18 15:22:
没有笑斑竹的意思。
我原先也喜欢用宏和批处理做这种工作。后来发现学点编程可以简化自己许多工作,挺好的。
呵呵,开玩笑,别当真:)
等有时间我也想学学遍程,是不错,有什么困难自己遍出来就解决了,不用求别人,哈哈:D
UE-32是WINDOWS
速度不快,即使是XP也难说,文件量一大,大得也象XP时就会不行的,所以分几次来弄比较好。[ Last edited by amkr1015 on 2003-11-18 at 23:00 ] Originally posted by amkr1015 at 2003-11-18 22:54:
速度不快,即使是XP也难说,文件量一大,大得也象XP时就会不行的,所以分几次来弄比较好。
[ Last edited by amkr1015 on 2003-11-18 at 23:00 ]
好,谢谢您的提示:) ;TOUXIAO
页:
[1]
2