Board logo

标题: [文本处理] 【已解决】批处理怎样给包含关键词的“行”植入标记? [打印本页]

作者: 屡败屡战    时间: 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 格式
  1. @if(0)==(0) echo off
  2. dir /b /a-d /s *.txt | cscript //nologo //e:jscript "%~f0"
  3. pause & goto :EOF
  4. @end
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. var reg = /^.*(\d{4})([-/])(\d{1,2})\2(\d{1,2})/gm;
  7. var checkValidDate = function(s0, s1, s2, s3, s4){
  8.     var dt = new Date(s1, s3 - 1, s4);
  9.     return (dt.getFullYear() == s1 && (dt.getMonth() + 1) == s3 && dt.getDate() == s4) ? '¥' + s0 : s0;
  10. }
  11. while(!WSH.StdIn.AtEndOfStream){
  12.     var strFile = WSH.StdIn.ReadLine();
  13.     var objFile = fso.OpenTextFile(strFile, 1);
  14.     var str = objFile.ReadAll().replace(reg, checkValidDate);
  15.     objFile.Close();
  16.     fso.OpenTextFile(strFile, 2).Write(str);
  17. }
复制代码

作者: Batcher    时间: 2018-7-24 21:54

2008-7-03
谁出的馊主意用这种格式啊
要嘛都补0,要嘛都不要补0,
作者: 屡败屡战    时间: 2018-7-24 22:38

本帖最后由 屡败屡战 于 2018-7-24 23:53 编辑

我没弄明白什么补零是什么意思?我的文档是从网上下载的,文档中有多余的内容,例如作者、来源、发布日期等等,想删除这些多余内容,只保留文档的正文即可,以方便浏览。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2