找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28272|回复: 4

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

[复制链接]
发表于 2016-2-5 15:31:05 | 显示全部楼层 |阅读模式
各位大神  我的需求就是题目的需求,求帮忙   
文件第一行的 内容是  

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日 星期五



谢谢各位大神了
 楼主| 发表于 2016-2-5 17:25:32 | 显示全部楼层
求帮忙-。-
发表于 2016-2-6 00:38:16 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2016-2-6 14:58:39 | 显示全部楼层
回复 3# CrLf
大神 这个怎么用
发表于 2016-2-7 00:12:26 | 显示全部楼层
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. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:24 , Processed in 0.018687 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表