本帖最后由 xp3000 于 2016-4-1 07:43 编辑
说真的批处理我真的不行,我就会软件,下载EmEditor这个软件安装,复制下面代码,另存为XX.JSEE
打开软件,点击宏→选择,把XX.JSEE剪切到Macros目录里面去,绿色版里面有其他人些的宏,然后打开XX.JSEE
这样宏就加载成功了
接下来打开文本或拖动文本进软件都可以,点击宏,运行,就会有自己事先写好的正则表达式规则,
下面有替换规则、提取规则、删除规则,可以自己任意添加实现批量处理,
比如把break;上面的一行复制粘贴一遍,修改里面的正则表达式部分就可以了,
提取那里,正则表达式之间用|分开,实现多规则提取,|之间最好用()把每条正则表达式括起来,
提取那里,然后另存为,目前还不会,见过有的宏提取后自动弹窗另存为XX类型文件。- menu= CreatePopupMenu();
- 替换处理 = CreatePopupMenu();
- 提取处理 = CreatePopupMenu();
- 删除处理 = CreatePopupMenu();
- if (document.selection.isempty)
- nFlags=eeFindNext | eeReplaceAll | eeFindReplaceRegExp;
- else
- nFlags=eeFindNext | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp;
-
- menu.AddPopup( "替换文本", 替换处理 );
- 替换处理.Add( "毫秒后5个数字加个0", 1 );
- 替换处理.Add( "", 0, eeMenuSeparator );
- 替换处理.Add( "毫秒后5个数字加个0替换方法2", 4 );
- menu.Add( "", 0, eeMenuSeparator );
-
- menu.AddPopup( "提取文本", 提取处理 );
- 提取处理.Add( "正则表达式提取文本", 2 );
- menu.Add( "", 0, eeMenuSeparator );
-
- menu.AddPopup( "删除文本", 删除处理 );
- 删除处理.Add( "正则表达式删除文本", 3 );
- menu.Add( "", 0, eeMenuSeparator );
-
-
- result = menu.Track( 0 );
- if (result>40) nFlags=nFlags=eeFindNext | eeReplaceAll | eeFindReplaceRegExp;
- switch(result){
-
-
-
- case 1: //*年*月*日 *时*分*秒.*毫秒后5个数字加0,少于或多于5个数字跳过,替换规则,将正则表达式第1个()的内容和第2个()的内容之间添加一个0
- document.selection.Replace("(\\|[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{5})(\\|)","\\10\\2",nFlags);
- break;
-
-
- case 2: //提取文本,匹配0-9的数字一次以上,|一次以上,除换行的任意字符一次以上,|一次以上,数字0,0次或多次回车、换行
- document.selection.SelectAll();
- var content = "";
- var arr = document.selection.Text.match(/\d+\|+.+\|+0[\r\n]*/g);
- //下面是匹配两个规则的提取说明,可按要求修改上一行内容:
- //下面分别匹配0-9任意数一次以上,可以匹配或不匹配回车、换行或回车换行/////匹配任意英文大小写一次以上,可以匹配或不匹配回车、换行
- //var arr = document.selection.Text.match(/([0-9]+(\r|\n|\r\n)?)|([a-zA-Z]+([\r\n]+)?)/g);
- if(arr == null)
- {
- Quit();
- }
- for(var i=0;i<arr.length;i++)
- {
- content += arr[i];
- }
- editor.ExecuteCommandByID(4096);
- sleep(500);
- //下面将回车或换行,替换成回车换行,回车换行多个替换为一个回车换行
- document.selection.Text = content.replace(/[\r\n]/g,"\r\n").replace(/(\r\n)+/g,"$1");
-
- name = document.selection.Text;
- document.Save(name+'提取'+'.log'); //提取文件路径软件顶端有提示
- break;
-
-
- case 3: //删除文本,左边以0-9的六位数字开头,中间是除换行的任意77个字符以上,右侧以0收尾,如果0在行尾,可以写成(?<=0[\r\n]+)
- document.selection.Replace("(?=[0-9]{6}).{77,}(?<=0)","",nFlags);
- break;
-
- case 4: //*年*月*日 *时*分*秒.*毫秒后5微数字加0,正则表达式左边不能匹配0-9的数字,中间匹配分组1,格式为****-**-** **:**:**.*****,右边不能匹配0-9的数字,替换值表示分组1后面加一个0
- document.selection.Replace("(?<=[^0-9])([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{5})(?=[^0-9])","$10",nFlags);
- break;
- }
复制代码
|