标题: [文本处理] 【已解决】批处理怎样给包含关键词的“行”植入标记? [打印本页]
作者: 屡败屡战 时间: 2018-7-19 15:49 标题: 【已解决】批处理怎样给包含关键词的“行”植入标记?
问题(1):我想在当前文件夹(包含孑文件夹),只要搜索出包含“日期格式”的“行”,就在其行前植入一个“¥”字符(以作为标记)
问题(2):我有一个“关键词.txt”,文件内容是关键词,一行一个。我想在当前文件夹(包含孑文件夹)进行搜索,若文本内容中包含“关键词”的“行”,就在其行前植入一个“¥”字符(以作为标记)
作者: 屡败屡战 时间: 2018-7-21 08:54
望给些提示
作者: codegay 时间: 2018-7-21 15:27
正则表达式:
查找(.*\d{4}-\d{1,2}-\d{1,2}.*)
替换为¥\1
作者: WHY 时间: 2018-7-21 19:42
所谓的“日期格式”千变万化,包括长日期格式、短日期格式、utc 标准格式、甚至 Unix 时间戳 等等。
要把文本里所有的“日期格式”都找出来,你那是在说梦话。
作者: WHY 时间: 2018-7-21 19:46
仅匹配 yyyy-MM-dd 或 yyyy-M-d 或 yyyy/MM/dd 或 yyyy/M/d 格式- @if(0)==(0) echo off
- dir /b /a-d /s *.txt | cscript //nologo //e:jscript "%~f0"
- pause & goto :EOF
- @end
-
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var reg = /^.*(\d{4})([-/])(\d{1,2})\2(\d{1,2})/gm;
-
- var checkValidDate = function(s0, s1, s2, s3, s4){
- var dt = new Date(s1, s3 - 1, s4);
- return (dt.getFullYear() == s1 && (dt.getMonth() + 1) == s3 && dt.getDate() == s4) ? '¥' + s0 : s0;
- }
-
- while(!WSH.StdIn.AtEndOfStream){
- var strFile = WSH.StdIn.ReadLine();
- var objFile = fso.OpenTextFile(strFile, 1);
- var str = objFile.ReadAll().replace(reg, checkValidDate);
- objFile.Close();
- fso.OpenTextFile(strFile, 2).Write(str);
- }
复制代码
作者: Batcher 时间: 2018-7-24 21:54
2008-7-03
谁出的馊主意用这种格式啊
要嘛都补0,要嘛都不要补0,
作者: 屡败屡战 时间: 2018-7-24 22:38
本帖最后由 屡败屡战 于 2018-7-24 23:53 编辑
我没弄明白什么补零是什么意思?我的文档是从网上下载的,文档中有多余的内容,例如作者、来源、发布日期等等,想删除这些多余内容,只保留文档的正文即可,以方便浏览。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |