Board logo

标题: [文件操作] 批处理如何批量检查文件名与TXT第一行指定位置的内容是否相同? [打印本页]

作者: eddyann    时间: 2016-2-5 15:31     标题: 批处理如何批量检查文件名与TXT第一行指定位置的内容是否相同?

各位大神  我的需求就是题目的需求,求帮忙   
文件第一行的 内容是  

channel:XXYY     


文件名一般为 XXYY  或者是YY
我需要检查的就是TXT文件内容中XXYY的 YY 部分是否跟 和文件名中的YY匹配   

举例说明 : txt 第一行为    channel:北京新闻     
                 文件名是 新闻.txt


验证 内容中的 channel:北京新闻  是否跟 文件名中的新闻.txt  或者北京新闻.txt  或者是 新闻频道.txt 的新闻 这两字匹配




在百度看到一个 但他是检查其他位置数据跟文件名的


贴出来给各位大神参考下
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%a in (*.txt) do (
  4.     set Str=%%~na
  5.     for /f "tokens=3-6 delims=_-" %%w in ("!Str!") do set Str=%%~w%%~x%%~y%%~z
  6.     more +3 "%%~a">$tmp
  7.     set /p FStr=<$tmp
  8.     del $tmp
  9.     if defined FStr (
  10.         echo !FStr:-=!|findstr /i /c:"!Str!">nul || echo %%~nxa>>Mismatch.log
  11.         set FStr=
  12.     ) else (
  13.         echo %%~nxa>>Mismatch.log
  14.     )
  15. )
  16. echo 不匹配的文件名已写入Mismatch.log
  17. pause
复制代码
另外 文件的第二行是 当前日期下一天的日期 格式为   2月5日 星期五  需要检查的是2月5日是否为系统当前日期下一天的日期
如果不是则导入LOG 不知道这个可以实现么


具体格式:
channel:北京新闻
02月05日 星期五



谢谢各位大神了
作者: eddyann    时间: 2016-2-5 17:25

求帮忙-。-
作者: CrLf    时间: 2016-2-6 00:38

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2" %%a in ('mshta "http://bathome.net/s/hta/?%random%&load=+moment" "moment().add(1,'d').lang('zh-cn').format('MM月DD日 星期dd')"') do set dt=%%a
  3. (for %%a in (*.txt) do (
  4.    set "line1="
  5.    set "line2="
  6.    (set /p line1=&set /p line2=)<"%%a"
  7.    for /f "tokens=1* delims=: " %%b in ("!line1!") do (
  8.       if %%b==channel if %%c neq %%~na echo %%a&set "line2=%dt%"
  9.    )
  10.    if !line2! neq !dt! echo %%a
  11. ))>Mismatch.log
复制代码

作者: eddyann    时间: 2016-2-6 14:58

回复 3# CrLf
大神 这个怎么用
作者: WHY    时间: 2016-2-7 00:12

test.bat
  1. @if (0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0" > NoMatch.Log
  3. pause & exit
  4. @end
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. while(!WSH.StdIn.AtEndOfStream){
  7.     var strFile = WSH.StdIn.ReadLine();
  8.     var objFile = fso.OpenTextFile(strFile, 1);
  9.     var s1 = objFile.ReadLine().replace(/.*(..)$/, '$1');
  10.     var s2 = objFile.ReadLine();
  11.     objFile.Close(); objFile = null;
  12.     if(strFile.indexOf(s1) < 0 || dateTest(s2)) WSH.Echo(strFile);
  13. }
  14. function dateTest(s) {
  15.     var date = new Date();
  16.     date.setDate(date.getDate() + 1);
  17.     var dt = (date.getMonth() + 101 + '月').substr(1);
  18.     dt += (date.getDate() + 100 + '日').substr(1);
  19.     dt += ' 星期' + '日一二三四五六'.charAt(date.getDay());
  20.     if(s != dt){return 1}else return 0
  21. }
复制代码





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