[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 又一次多文件批处理替换 连表达式都想不出来 求帮忙

本帖最后由 观心 于 2014-6-27 10:50 编辑

在股票数据转换当中又碰到问题:
一个文件名为 SZ000002.TXT的文本内容为:
2007/11/01;23.37;24.49;22.87;23.69;95782978;3782251008.000
2007/11/02;38.70;40.66;38.21;39.05;62871777;2495787520.000
数据来源:通达信

中间许多行,这里只取最后3行,要实现如下格式并且文件名改为000002.txt
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
000002.SZ,2007-11-01,23.37,24.49,22.87,23.6,957829
000002.SZ,2007-11-02,38.7,40.66,38.21,39.05,628717
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1


目录下几千个文件都要这样改,求老师和前辈帮忙实现。自己能力浅薄,我用sed gawk连将文件名000002写入到文本内容中都弄不出来,惭愧啊!




本帖最后由 观心 于 2014-6-27 01:06 编辑
20140627 更新

经过几天论坛上神人们的关心 鄙人的问题得到完美解决 在此结贴 谢谢大家的关心和耐心

在下机器的基本配置 I3 12G

非常感谢 PowerShell 的热情和执着

因为net framework 4.5.2没有装好 c:盘空间竟然不够需要2836MB 可用1403MB 时间匆忙因此没有测试 等后天用2003在ramos中测试看行不行

其次感谢 terse 全程跟踪的默默关心和付出  您的代码测试需要2分钟左右 最终选择了您的代码常用 谢谢

还有 CrLf 麻烦阁下费了许多心思 因为在下的学识浅薄 一个问题难以描述清楚 谢谢您的不厌其烦 让我获益良多 您的代码测试需要3分钟左右

还要感谢 apang 最后的绝杀一剑  您的代码在机器上用了2分钟左右 虽然SH 和SZ没有分别表示 但是将未处理的文件都考虑到了 谢谢您的细心

最后再完整的描述一下鄙人的问题

有两种字符开头的文本文件(源文件藏在#19最后)
1、以SH开头的文本比如 SH600099.TXT
2、以SZ开头的文本比如 SZ000099.TXT

其中 1、
以SH开头的文本比如 SH600099.TXT 格式如下,最后一行以“数据来源:”结束。
2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.000
2003/08/04;5.95;6.14;5.91;6.03;1491738;12023611.000
2003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.000
2003/08/06;5.93;6.06;5.93;5.93;608200;4914825.000
2003/08/07;5.94;6.01;5.92;5.93;490916;3944958.000
2003/08/08;5.95;5.99;5.78;5.83;893227;7121715.000
2003/08/11;5.80;5.84;5.79;5.80;215771;1688739.000
2003/08/12;5.79;5.86;5.79;5.85;298740;2343791.000
2003/08/13;5.84;5.87;5.78;5.81;177700;1396385.000
2003/08/14;5.86;5.92;5.78;5.78;114259;895077.000
2003/08/15;5.87;5.87;5.77;5.84;546519;4263697.000
2003/08/18;5.78;5.80;5.78;5.78;45000;351128.000
2003/08/19;5.84;5.84;5.78;5.79;101390;792405.000
2003/08/20;5.79;5.83;5.74;5.80;69170;539040.000
2003/08/21;5.84;5.84;5.74;5.79;53620;417572.000
2003/08/22;5.79;5.84;5.74;5.79;76800;599503.000
2003/08/25;5.80;5.82;5.74;5.77;91848;715345.000
2003/08/26;5.79;5.79;5.73;5.77;108367;841339.000
2003/08/27;5.77;5.77;5.72;5.74;58160;450937.000
2003/08/28;5.71;5.86;5.67;5.81;315739;2458913.000
2003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000
数据来源:

转换成600099.txt (也就是SH600099.TXT文件名前面的SH 去掉) 格式如下:

$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
600099.SH,2003-08-01,5.86,5.94,5.85,5.91,757319
600099.SH,2003-08-04,5.95,6.14,5.91,6.03,1491738
600099.SH,2003-08-05,6.03,6.12,5.93,5.98,1783220
600099.SH,2003-08-06,5.94,6.06,5.93,5.94,608200
600099.SH,2003-08-07,5.94,6.01,5.92,5.93,490916
600099.SH,2003-08-08,5.95,5.99,5.79,5.83,893227
600099.SH,2003-08-11,5.8,5.85,5.8,5.8,215771
600099.SH,2003-08-12,5.8,5.86,5.8,5.85,298740
600099.SH,2003-08-13,5.85,5.88,5.79,5.82,177700
600099.SH,2003-08-14,5.87,5.92,5.79,5.79,114259
600099.SH,2003-08-15,5.88,5.88,5.78,5.85,546519
600099.SH,2003-08-18,5.79,5.8,5.79,5.79,45000
600099.SH,2003-08-19,5.85,5.85,5.79,5.8,101390
600099.SH,2003-08-20,5.8,5.84,5.75,5.8,69170
600099.SH,2003-08-21,5.85,5.85,5.75,5.8,53620
600099.SH,2003-08-22,5.8,5.85,5.75,5.8,76800
600099.SH,2003-08-25,5.8,5.82,5.74,5.77,91848
600099.SH,2003-08-26,5.8,5.8,5.74,5.77,108367
600099.SH,2003-08-27,5.78,5.78,5.73,5.74,58160
600099.SH,2003-08-28,5.71,5.87,5.68,5.82,315739
600099.SH,2003-08-29,5.85,5.85,5.68,5.7,231281
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1


2、以SZ开头的文本比如 SZ000099.TXT 格式如下,最后一行以“数据来源:”结束。
2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.000
2003/08/04;5.95;6.14;5.91;6.03;1491738;12023611.000
2003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.000
2003/08/06;5.93;6.06;5.93;5.93;608200;4914825.000
2003/08/07;5.94;6.01;5.92;5.93;490916;3944958.000
2003/08/08;5.95;5.99;5.78;5.83;893227;7121715.000
2003/08/11;5.80;5.84;5.79;5.80;215771;1688739.000
2003/08/12;5.79;5.86;5.79;5.85;298740;2343791.000
2003/08/13;5.84;5.87;5.78;5.81;177700;1396385.000
2003/08/14;5.86;5.92;5.78;5.78;114259;895077.000
2003/08/15;5.87;5.87;5.77;5.84;546519;4263697.000
2003/08/18;5.78;5.80;5.78;5.78;45000;351128.000
2003/08/19;5.84;5.84;5.78;5.79;101390;792405.000
2003/08/20;5.79;5.83;5.74;5.80;69170;539040.000
2003/08/21;5.84;5.84;5.74;5.79;53620;417572.000
2003/08/22;5.79;5.84;5.74;5.79;76800;599503.000
2003/08/25;5.80;5.82;5.74;5.77;91848;715345.000
2003/08/26;5.79;5.79;5.73;5.77;108367;841339.000
2003/08/27;5.77;5.77;5.72;5.74;58160;450937.000
2003/08/28;5.71;5.86;5.67;5.81;315739;2458913.000
2003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000
数据来源:

转换成000099.txt (也就是SZ000099.TXT文件名前面的SZ 去掉) 格式如下:

$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
000099.SZ,2003-08-01,5.86,5.94,5.85,5.91,757319
000099.SZ,2003-08-04,5.95,6.14,5.91,6.03,1491738
000099.SZ,2003-08-05,6.03,6.12,5.93,5.98,1783220
000099.SZ,2003-08-06,5.94,6.06,5.93,5.94,608200
000099.SZ,2003-08-07,5.94,6.01,5.92,5.93,490916
000099.SZ,2003-08-08,5.95,5.99,5.79,5.83,893227
000099.SZ,2003-08-11,5.8,5.85,5.8,5.8,215771
000099.SZ,2003-08-12,5.8,5.86,5.8,5.85,298740
000099.SZ,2003-08-13,5.85,5.88,5.79,5.82,177700
000099.SZ,2003-08-14,5.87,5.92,5.79,5.79,114259
000099.SZ,2003-08-15,5.88,5.88,5.78,5.85,546519
000099.SZ,2003-08-18,5.79,5.8,5.79,5.79,45000
000099.SZ,2003-08-19,5.85,5.85,5.79,5.8,101390
000099.SZ,2003-08-20,5.8,5.84,5.75,5.8,69170
000099.SZ,2003-08-21,5.85,5.85,5.75,5.8,53620
000099.SZ,2003-08-22,5.8,5.85,5.75,5.8,76800
000099.SZ,2003-08-25,5.8,5.82,5.74,5.77,91848
000099.SZ,2003-08-26,5.8,5.8,5.74,5.77,108367
000099.SZ,2003-08-27,5.78,5.78,5.73,5.74,58160
000099.SZ,2003-08-28,5.71,5.87,5.68,5.82,315739
000099.SZ,2003-08-29,5.85,5.85,5.68,5.7,231281
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

转换要求:
除了改文件名外,文本内容就是将源文本中第一行加上
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume

文本中间 每一行以文件名中的数字开头 如:000099     接着显示文件名中的字符 如:SZ或SH (根据文件名前两个字符而定)

然后转换日期的格式 然后将分号改为逗号 然后去掉每一行最后分号后面的所有字符


最后一行替换成
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

以上 本帖完美获得解决 感谢关心此帖的几位大佬 apang CrLf PowerShell terse 谢谢你们!!!希望批处理之家合家欢乐 和谐安详!!!

回复 2# CrLf


SH600099.txt要变成600099.txt 请前辈帮忙

在第一行加上
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
然后每一行开始加上文件名中的数字,比如600099(主要是这一步难住我了)
然后分号改成逗号 去掉每一行最后一个分号后面的数字
最后 将最后一行替换成
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

TOP

回复 3# PowerShell

在这个帖子里面见你用powershell测试了,速度感觉不是很快啊!方便性应该没得说。
http://www.bathome.net/thread-30473-1-4.html
学习一下powershell看看吧!先谢谢你了!

TOP

回复 14# CrLf
不管大家处于什么目的和情绪,在此都要感谢大家的关心和关注!!!拜谢!!!希望大家合家欢乐,幸福平和!
两个文件的Volume是不一样
变通的方法就是:
去掉源文件每一行最后一个分号后面的数字就可以了

TOP

回复 11# terse


    将前辈的代码存为aa.bat 执行后出现如下错误

TOP

本帖最后由 观心 于 2014-6-26 02:29 编辑

回复 17# CrLf

可能我表达不清楚。就是将源文件SH600099.txt 改成600099.txt(类似的还有SZ000099.txt改成000099.txt)
里面的数值相似即可,主要是要600099.txt里面的格式,600099.txt中Volume栏可以取SH600099.txt中最后两个分号中间的数值。
前辈的代码运行后每个文件内容都是
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

里面缺少了每日的价格和成交量,需要这个样子的
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
600099.SS,2003-08-01,5.86,5.94,5.85,5.91,757319
600099.SS,2003-08-04,5.95,6.14,5.91,6.03,1491738
600099.SS,2003-08-05,6.03,6.12,5.93,5.98,1783220
600099.SS,2003-08-06,5.94,6.06,5.93,5.94,608200
600099.SS,2003-08-07,5.94,6.01,5.92,5.93,490916
600099.SS,2003-08-08,5.95,5.99,5.79,5.83,893227
600099.SS,2003-08-11,5.8,5.85,5.8,5.8,215771
600099.SS,2003-08-12,5.8,5.86,5.8,5.85,298740
600099.SS,2003-08-13,5.85,5.88,5.79,5.82,177700
600099.SS,2003-08-14,5.87,5.92,5.79,5.79,114259
600099.SS,2003-08-15,5.88,5.88,5.78,5.85,546519
600099.SS,2003-08-18,5.79,5.8,5.79,5.79,45000
600099.SS,2003-08-19,5.85,5.85,5.79,5.8,101390
600099.SS,2003-08-20,5.8,5.84,5.75,5.8,69170
600099.SS,2003-08-21,5.85,5.85,5.75,5.8,53620
600099.SS,2003-08-22,5.8,5.85,5.75,5.8,76800
600099.SS,2003-08-25,5.8,5.82,5.74,5.77,91848
600099.SS,2003-08-26,5.8,5.8,5.74,5.77,108367
600099.SS,2003-08-27,5.78,5.78,5.73,5.74,58160
600099.SS,2003-08-28,5.71,5.87,5.68,5.82,315739
600099.SS,2003-08-29,5.85,5.85,5.68,5.7,231281
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

  600099.txt中Volume栏可以取SH600099.txt中最后两个分号中间的数值,如下
2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.000
2003/08/04;5.95;6.14;5.91;6.03;1491738;12023611.000
2003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.000
2003/08/06;5.93;6.06;5.93;5.93;608200;4914825.000
2003/08/07;5.94;6.01;5.92;5.93;490916;3944958.000
2003/08/08;5.95;5.99;5.78;5.83;893227;7121715.000
2003/08/11;5.80;5.84;5.79;5.80;215771;1688739.000
2003/08/12;5.79;5.86;5.79;5.85;298740;2343791.000
2003/08/13;5.84;5.87;5.78;5.81;177700;1396385.000
2003/08/14;5.86;5.92;5.78;5.78;114259;895077.000
2003/08/15;5.87;5.87;5.77;5.84;546519;4263697.000
2003/08/18;5.78;5.80;5.78;5.78;45000;351128.000
2003/08/19;5.84;5.84;5.78;5.79;101390;792405.000
2003/08/20;5.79;5.83;5.74;5.80;69170;539040.000
2003/08/21;5.84;5.84;5.74;5.79;53620;417572.000
2003/08/22;5.79;5.84;5.74;5.79;76800;599503.000
2003/08/25;5.80;5.82;5.74;5.77;91848;715345.000
2003/08/26;5.79;5.79;5.73;5.77;108367;841339.000
2003/08/27;5.77;5.77;5.72;5.74;58160;450937.000
2003/08/28;5.71;5.86;5.67;5.81;315739;2458913.000
2003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000
附上源文件地址http://pan.baidu.com/s/1ntG5HC9

TOP

回复 22# terse

源文件地址在19楼
大神,还是这个问题啊!

TOP

回复 20# CrLf

感谢前辈在这个帖子上花了这么多时间!可是还差最后一步,好像日期前的字母代码漏掉了,也怪我没有表达清楚,让前辈费心了,就是600099后面的SS如何加上去?19楼的源文件里面有两种文本,一种SH600099.txt,一种SZ000099.txt.

SH开头的文本SH600099.txt 变换后
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
600099.SS,2003-08-01,5.86,5.94,5.85,5.91,757319
600099.SS,2003-08-04,5.95,6.14,5.91,6.03,1491738
600099.SS,2003-08-05,6.03,6.12,5.93,5.98,1783220
600099.SS,2003-08-06,5.94,6.06,5.93,5.94,608200
或者SH不变也可以
600099.SH,2003-08-01,5.86,5.94,5.85,5.91,757319
600099.SH,2003-08-04,5.95,6.14,5.91,6.03,1491738
600099.SH,2003-08-05,6.03,6.12,5.93,5.98,1783220
600099.SH,2003-08-06,5.94,6.06,5.93,5.94,608200

SZ开头的文本SZ000099.txt变换后
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
000099.SZ,2003-08-01,5.86,5.94,5.85,5.91,757319
000099.SZ,2003-08-04,5.95,6.14,5.91,6.03,1491738
000099.SZ,2003-08-05,6.03,6.12,5.93,5.98,1783220
000099.SZ,2003-08-06,5.94,6.06,5.93,5.94,608200

TOP

回复 27# CrLf


    不是固定的SS   是文件名开头两位字符 。比如SH开头的文件名,就用SH;SZ开头的文件名就用SZ.
对把文件名的内容写入文本中比较感兴趣,要好好学习下。

TOP

本帖最后由 观心 于 2014-6-26 22:40 编辑

回复 27# CrLf


恼扰了!不好意思!已经够我学习一阵子了!

TOP

本帖最后由 观心 于 2014-6-27 01:06 编辑

经过几天论坛上神人们的关心 鄙人的问题得到完美解决 在此结贴 谢谢大家的关心和耐心

在下机器的基本配置 I3 12G

非常感谢 PowerShell 的热情和执着

因为net framework 4.5.2没有装好 c:盘空间竟然不够需要2836MB 可用1403MB 时间匆忙因此没有测试 等后天用2003在ramos中测试看行不行

其次感谢 terse 全程跟踪的默默关心和付出  您的代码测试需要2分钟左右 最终选择了您的代码常用 谢谢

还有 CrLf 麻烦阁下费了许多心思 因为在下的学识浅薄 一个问题难以描述清楚 谢谢您的不厌其烦 让我获益良多 您的代码测试需要3分钟左右

还要感谢 apang 最后的绝杀一剑  您的代码在机器上用了2分钟左右 虽然SH 和SZ没有分别表示 但是将未处理的文件都考虑到了 谢谢您的细心

最后再完整的描述一下鄙人的问题

有两种字符开头的文本文件
1、以SH开头的文本比如 SH600099.TXT
2、以SZ开头的文本比如 SZ000099.TXT

其中 1、
以SH开头的文本比如 SH600099.TXT 格式如下,最后一行以“数据来源:”结束。
2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.000
2003/08/04;5.95;6.14;5.91;6.03;1491738;12023611.000
2003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.000
2003/08/06;5.93;6.06;5.93;5.93;608200;4914825.000
2003/08/07;5.94;6.01;5.92;5.93;490916;3944958.000
2003/08/08;5.95;5.99;5.78;5.83;893227;7121715.000
2003/08/11;5.80;5.84;5.79;5.80;215771;1688739.000
2003/08/12;5.79;5.86;5.79;5.85;298740;2343791.000
2003/08/13;5.84;5.87;5.78;5.81;177700;1396385.000
2003/08/14;5.86;5.92;5.78;5.78;114259;895077.000
2003/08/15;5.87;5.87;5.77;5.84;546519;4263697.000
2003/08/18;5.78;5.80;5.78;5.78;45000;351128.000
2003/08/19;5.84;5.84;5.78;5.79;101390;792405.000
2003/08/20;5.79;5.83;5.74;5.80;69170;539040.000
2003/08/21;5.84;5.84;5.74;5.79;53620;417572.000
2003/08/22;5.79;5.84;5.74;5.79;76800;599503.000
2003/08/25;5.80;5.82;5.74;5.77;91848;715345.000
2003/08/26;5.79;5.79;5.73;5.77;108367;841339.000
2003/08/27;5.77;5.77;5.72;5.74;58160;450937.000
2003/08/28;5.71;5.86;5.67;5.81;315739;2458913.000
2003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000
数据来源:

转换成600099.txt (也就是SH600099.TXT文件名前面的SH 去掉) 格式如下:

$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
600099.SH,2003-08-01,5.86,5.94,5.85,5.91,757319
600099.SH,2003-08-04,5.95,6.14,5.91,6.03,1491738
600099.SH,2003-08-05,6.03,6.12,5.93,5.98,1783220
600099.SH,2003-08-06,5.94,6.06,5.93,5.94,608200
600099.SH,2003-08-07,5.94,6.01,5.92,5.93,490916
600099.SH,2003-08-08,5.95,5.99,5.79,5.83,893227
600099.SH,2003-08-11,5.8,5.85,5.8,5.8,215771
600099.SH,2003-08-12,5.8,5.86,5.8,5.85,298740
600099.SH,2003-08-13,5.85,5.88,5.79,5.82,177700
600099.SH,2003-08-14,5.87,5.92,5.79,5.79,114259
600099.SH,2003-08-15,5.88,5.88,5.78,5.85,546519
600099.SH,2003-08-18,5.79,5.8,5.79,5.79,45000
600099.SH,2003-08-19,5.85,5.85,5.79,5.8,101390
600099.SH,2003-08-20,5.8,5.84,5.75,5.8,69170
600099.SH,2003-08-21,5.85,5.85,5.75,5.8,53620
600099.SH,2003-08-22,5.8,5.85,5.75,5.8,76800
600099.SH,2003-08-25,5.8,5.82,5.74,5.77,91848
600099.SH,2003-08-26,5.8,5.8,5.74,5.77,108367
600099.SH,2003-08-27,5.78,5.78,5.73,5.74,58160
600099.SH,2003-08-28,5.71,5.87,5.68,5.82,315739
600099.SH,2003-08-29,5.85,5.85,5.68,5.7,231281
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1


2、以SZ开头的文本比如 SZ000099.TXT 格式如下,最后一行以“数据来源:”结束。
2003/08/01;5.86;5.94;5.84;5.91;757319;6021637.000
2003/08/04;5.95;6.14;5.91;6.03;1491738;12023611.000
2003/08/05;6.03;6.12;5.93;5.98;1783220;14456444.000
2003/08/06;5.93;6.06;5.93;5.93;608200;4914825.000
2003/08/07;5.94;6.01;5.92;5.93;490916;3944958.000
2003/08/08;5.95;5.99;5.78;5.83;893227;7121715.000
2003/08/11;5.80;5.84;5.79;5.80;215771;1688739.000
2003/08/12;5.79;5.86;5.79;5.85;298740;2343791.000
2003/08/13;5.84;5.87;5.78;5.81;177700;1396385.000
2003/08/14;5.86;5.92;5.78;5.78;114259;895077.000
2003/08/15;5.87;5.87;5.77;5.84;546519;4263697.000
2003/08/18;5.78;5.80;5.78;5.78;45000;351128.000
2003/08/19;5.84;5.84;5.78;5.79;101390;792405.000
2003/08/20;5.79;5.83;5.74;5.80;69170;539040.000
2003/08/21;5.84;5.84;5.74;5.79;53620;417572.000
2003/08/22;5.79;5.84;5.74;5.79;76800;599503.000
2003/08/25;5.80;5.82;5.74;5.77;91848;715345.000
2003/08/26;5.79;5.79;5.73;5.77;108367;841339.000
2003/08/27;5.77;5.77;5.72;5.74;58160;450937.000
2003/08/28;5.71;5.86;5.67;5.81;315739;2458913.000
2003/08/29;5.84;5.84;5.67;5.69;231281;1794956.000
数据来源:

转换成000099.txt (也就是SZ000099.TXT文件名前面的SZ 去掉) 格式如下:

$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume
000099.SZ,2003-08-01,5.86,5.94,5.85,5.91,757319
000099.SZ,2003-08-04,5.95,6.14,5.91,6.03,1491738
000099.SZ,2003-08-05,6.03,6.12,5.93,5.98,1783220
000099.SZ,2003-08-06,5.94,6.06,5.93,5.94,608200
000099.SZ,2003-08-07,5.94,6.01,5.92,5.93,490916
000099.SZ,2003-08-08,5.95,5.99,5.79,5.83,893227
000099.SZ,2003-08-11,5.8,5.85,5.8,5.8,215771
000099.SZ,2003-08-12,5.8,5.86,5.8,5.85,298740
000099.SZ,2003-08-13,5.85,5.88,5.79,5.82,177700
000099.SZ,2003-08-14,5.87,5.92,5.79,5.79,114259
000099.SZ,2003-08-15,5.88,5.88,5.78,5.85,546519
000099.SZ,2003-08-18,5.79,5.8,5.79,5.79,45000
000099.SZ,2003-08-19,5.85,5.85,5.79,5.8,101390
000099.SZ,2003-08-20,5.8,5.84,5.75,5.8,69170
000099.SZ,2003-08-21,5.85,5.85,5.75,5.8,53620
000099.SZ,2003-08-22,5.8,5.85,5.75,5.8,76800
000099.SZ,2003-08-25,5.8,5.82,5.74,5.77,91848
000099.SZ,2003-08-26,5.8,5.8,5.74,5.77,108367
000099.SZ,2003-08-27,5.78,5.78,5.73,5.74,58160
000099.SZ,2003-08-28,5.71,5.87,5.68,5.82,315739
000099.SZ,2003-08-29,5.85,5.85,5.68,5.7,231281
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

转换要求:
除了改文件名外,文本内容就是将源文本中第一行加上
$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume

文本中间 每一行以文件名中的数字开头 如:000099     接着显示文件名中的字符 如:SZ或SH (根据文件名前两个字符而定)

然后转换日期的格式 然后将分号改为逗号 然后去掉每一行最后分号后面的所有字符


最后一行替换成
$SKIPLINES 1
$SEPARATOR ,
$DEBUG 1
$BREAKONERR 1
$AUTOADD 1

以上 本帖完美获得解决 感谢关心此帖的几位大佬 apang CrLf PowerShell terse 谢谢你们!!!希望批处理之家合家欢乐 和谐安详!!!

TOP

返回列表