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

[文件操作] 批处理如何批量检查文件名与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日 星期五



谢谢各位大神了

求帮忙-。-

TOP

  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
复制代码

TOP

回复 3# CrLf
大神 这个怎么用

TOP

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. }
复制代码

TOP

返回列表