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

TOP

  1. @if(0)==(0) echo off
  2. md test 2>nul
  3. set ph=%~dp0
  4. cscript //nologo //E:JScript "%~f0" "%ph%"
  5. pause&exit
  6. @end;
  7. var fso = new ActiveXObject("Scripting.FileSystemObject");
  8. var re = /^(.*);[^\;]+$/gm;
  9. var str = '$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume' + '\r\n';
  10. var arr = ['$SKIPLINES 1' , '$SEPARATOR ,' , '$DEBUG 1' , '$BREAKONERR 1', '$AUTOADD 1'];
  11. String.prototype.strreg = function(filename) {
  12.     return this.replace(re ,
  13.            function(a,b) {
  14.               return filename  + '.SS,' + b.replace(/;/g,',') +'\r\n';
  15.            });
  16. };
  17. function Files(files){
  18.     var f = fso.GetFolder(files);
  19.     var fc = new Enumerator(f.files);
  20.     for (; !fc.atEnd(); fc.moveNext())
  21.     {
  22.       var file =fc.item();
  23.       var ext=/\.[^\.]+$/.exec(file);
  24.       if (ext == '.txt') {
  25.           var filename = file.name.match(/\d+/);
  26.           var newfile = f + '/test/'+ filename + ext;
  27.           var fs = file.OpenAsTextStream(1, -2);
  28.           var text = str + fs.ReadAll().strreg(filename) + arr.join('\r\n');
  29.           fs.Close();
  30.           var fs = fso.createtextfile(newfile,true);
  31.           fs.Write(text);
  32.       }
  33.      }
  34. }
  35. Files(WScript.Arguments.Item(0));
复制代码

TOP

回复 12# PowerShell
虽版主头衔,然心胸狭隘,故心存疑惑,初为谁荐? 叹!论坛之辱!
本为P之论坛,却常有扰之,联想CMD;惭愧!
版主既然武功盖世;何不另立山头;容我等小生安生几许,又有何不可!也权当做件好事罢了。呜呼!
命中注定你难逃一劫,还是多行善事为上!
初诊:脑梗塞!
确诊:小儿脑残。
治疗方案:赶紧回去用药

TOP

回复 18# 观心
我win7 系统测试正常的哦
这个什么情况 文件多大

TOP

回复 18# 观心
脚本中处理路径自己更改下 可放在桌面或其他目录运行
如和TXT文件同一目录 可不用传递参数
  1. @if(0)==(0) echo off
  2. rem 目录路径自己更改
  3. set ph=f:\export
  4. cscript //nologo //E:JScript "%~f0" "%ph%"
  5. pause&exit
  6. @end;
  7. var fso = new ActiveXObject("Scripting.FileSystemObject");
  8. var re = /^(.*);[^\;]+$/gm;
  9. var str = '$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume' + '\r\n';
  10. var arr = ['$SKIPLINES 1' , '$SEPARATOR ,' , '$DEBUG 1' , '$BREAKONERR 1', '$AUTOADD 1'];
  11. var Folder=fso.GetFolder(WScript.Arguments.Count()?WScript.Arguments.Item(0):".");
  12. if (!fso.FolderExists(Folder+'/test/')) { fso.CreateFolder(Folder+'/test/')};
  13. for(var fc=new Enumerator(Folder.Files);!fc.atEnd();fc.moveNext()){
  14.       var file =fc.item();
  15.       var ext=/\.[^\.]+$/.exec(file);
  16.       if (ext == '.txt') {
  17.           var f = file.name.match(/\d+/);
  18.           var newfile = Folder + '/test/'+ f + ext;
  19.           var fs = file.OpenAsTextStream(1, -2);
  20.           var text = str + f2s(fs.ReadAll(),f) + arr.join('\r\n');
  21.           fs.Close();
  22.           var fs = fso.createtextfile(newfile,true);
  23.           fs.Write(text);
  24.           fs.Close();
  25.       }
  26. }
  27. function f2s(s,f) {
  28.     return s.replace(re ,
  29.            function(a,b) {
  30.               return f  + '.SS,' + b.replace(/;/g,',') + '\r\n';
  31.            });
  32. }
复制代码

TOP

本帖最后由 terse 于 2014-6-27 00:37 编辑

回复 30# 观心
可能测试文件不一
零能否检查文件夹下有不符文件吗
暂时加个判断
我这里运行环境 WIN7 小范围测试
测试文件大小 200KB左右 3000多行的文件成功处理
  1. @if(0)==(0) echo off
  2. rem 目录路径自己更改
  3. set ph=f:\export
  4. cscript //nologo //E:JScript "%~f0" %ph%
  5. pause&exit
  6. @end;
  7. var fso = new ActiveXObject("Scripting.FileSystemObject");
  8. var re = /^(.*);[^\;]+$/gm;
  9. var str = '$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume' + '\r\n';
  10. var arr = ['$SKIPLINES 1' , '$SEPARATOR ,' , '$DEBUG 1' , '$BREAKONERR 1', '$AUTOADD 1'];
  11. var Folder=fso.GetFolder(WScript.Arguments.Count()?WScript.Arguments.Item(0):".");
  12. if (!fso.FolderExists(Folder+'/test/')) { fso.CreateFolder(Folder+'/test/')};
  13. for(var fc=new Enumerator(Folder.Files);!fc.atEnd();fc.moveNext()){
  14.     var file =fc.item();
  15.     var ext=/\.[^\.]+$/.exec(file);
  16.     if (ext == '.txt') {
  17.         var f = file.name.match(/(^[a-zA-Z]+)(([0-9]){6})\./);
  18.         if (f) {
  19.             var newfile = Folder + '/test/'+ f[2] + ext;
  20.             var fs = file.OpenAsTextStream(1, -2);
  21.             if(!fs.Atendofstream)
  22.             {
  23.                 var text = str + fs.ReadAll().replace
  24.                 (re ,
  25.                    function(a,b) {
  26.                       return f[2]  + "." + f[1] + "," + b.replace(/;/g,',')+ "\r\n";
  27.                    }
  28.                 ) + arr.join('\r\n');
  29.                 fso.createtextfile(newfile,true).Write(text);
  30.             }  
  31.             fs.close();
  32.         }
  33.     }
  34. }
复制代码
再加个 判断行字符 排除类似最后行的
刚刚下载了样本 处理时间 1分多点
貌似有重复文件名 没处理直接覆盖
  1. @if(0)==(0) echo off
  2. set t=%time%
  3. rem 目录路径自己更改
  4. set ph=f:\export
  5. if exist "%ph%\" (set ph="%ph%") else set ph=
  6. cscript //nologo //E:JScript "%~f0" %ph%
  7. echo %T% %time%
  8. pause&exit
  9. @end;
  10. var fso = new ActiveXObject("Scripting.FileSystemObject");
  11. var re = /^(.+);([^;]+$)/gm;
  12. var str = '$FORMAT Ticker, Date_YMD, Open, High, Low, Close, Volume' + '\r\n';
  13. var arr = ['$SKIPLINES 1' , '$SEPARATOR ,' , '$DEBUG 1' , '$BREAKONERR 1', '$AUTOADD 1'];
  14. var Folder=fso.GetFolder(WScript.Arguments.Count()?WScript.Arguments.Item(0):".");
  15. if (!fso.FolderExists(Folder+'/test/')) { fso.CreateFolder(Folder+'/test/')};
  16. for(var fc=new Enumerator(Folder.Files);!fc.atEnd();fc.moveNext()){
  17.       var file =fc.item();
  18.       var ext=/\.[^\.]+$/.exec(file);
  19.       if (ext == '.txt') {
  20.           var f = file.name.match(/(^[a-zA-Z]+)((\d){6})\./);
  21.           if (f) {
  22.              var newfile = Folder + '/test/'+ f[2] + ext;
  23.              var fs = file.OpenAsTextStream(1, -2);
  24.              if(!fs.Atendofstream)
  25.              {
  26.                 var t='';
  27.                 fs.ReadAll().replace(re,
  28.                    function(a,b) {
  29.                        t+= f[2]  + '.'  + f[1] + ',' + b + '\r\n';
  30.                    }
  31.                 )
  32.                 if (t) {
  33.                    var text = str + t.replace(/;/g,',') + arr.join('\r\n');
  34.                    fso.createtextfile(newfile,true).Write(text);
  35.                 }
  36.              }
  37.              fs.Close();
  38.           }
  39.       }
  40. }
复制代码

TOP

回复 24# PowerShell
只能说你病得不轻,你父母知道不?估计你吃药时间到了都不知道!也难怪 你脑残嘛,记得下次出门多吃药!

TOP

返回列表