标题: [文件操作] 批处理如何批量检查文件名与TXT第一行指定位置的内容是否相同? [打印本页]
作者: eddyann 时间: 2016-2-5 15:31 标题: 批处理如何批量检查文件名与TXT第一行指定位置的内容是否相同?
各位大神 我的需求就是题目的需求,求帮忙
文件第一行的 内容是
channel:XXYY
文件名一般为 XXYY 或者是YY
我需要检查的就是TXT文件内容中XXYY的 YY 部分是否跟 和文件名中的YY匹配
举例说明 : txt 第一行为 channel:北京新闻
文件名是 新闻.txt
验证 内容中的 channel:北京新闻 是否跟 文件名中的新闻.txt 或者北京新闻.txt 或者是 新闻频道.txt 的新闻 这两字匹配
在百度看到一个 但他是检查其他位置数据跟文件名的
贴出来给各位大神参考下- @echo off
- setlocal enabledelayedexpansion
- for /r %%a in (*.txt) do (
- set Str=%%~na
- for /f "tokens=3-6 delims=_-" %%w in ("!Str!") do set Str=%%~w%%~x%%~y%%~z
- more +3 "%%~a">$tmp
- set /p FStr=<$tmp
- del $tmp
- if defined FStr (
- echo !FStr:-=!|findstr /i /c:"!Str!">nul || echo %%~nxa>>Mismatch.log
- set FStr=
- ) else (
- echo %%~nxa>>Mismatch.log
- )
- )
- echo 不匹配的文件名已写入Mismatch.log
- pause
复制代码
另外 文件的第二行是 当前日期下一天的日期 格式为 2月5日 星期五 需要检查的是2月5日是否为系统当前日期下一天的日期
如果不是则导入LOG 不知道这个可以实现么
具体格式:
channel:北京新闻
02月05日 星期五
谢谢各位大神了
作者: eddyann 时间: 2016-2-5 17:25
求帮忙-。-
作者: CrLf 时间: 2016-2-6 00:38
- @echo off&setlocal enabledelayedexpansion
- 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
- (for %%a in (*.txt) do (
- set "line1="
- set "line2="
- (set /p line1=&set /p line2=)<"%%a"
- for /f "tokens=1* delims=: " %%b in ("!line1!") do (
- if %%b==channel if %%c neq %%~na echo %%a&set "line2=%dt%"
- )
- if !line2! neq !dt! echo %%a
- ))>Mismatch.log
复制代码
作者: eddyann 时间: 2016-2-6 14:58
回复 3# CrLf
大神 这个怎么用
作者: WHY 时间: 2016-2-7 00:12
test.bat- @if (0)==(0) echo off
- dir /b *.txt | cscript //nologo //e:jscript "%~f0" > NoMatch.Log
- pause & exit
- @end
-
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- while(!WSH.StdIn.AtEndOfStream){
- var strFile = WSH.StdIn.ReadLine();
- var objFile = fso.OpenTextFile(strFile, 1);
- var s1 = objFile.ReadLine().replace(/.*(..)$/, '$1');
- var s2 = objFile.ReadLine();
- objFile.Close(); objFile = null;
- if(strFile.indexOf(s1) < 0 || dateTest(s2)) WSH.Echo(strFile);
- }
-
- function dateTest(s) {
- var date = new Date();
- date.setDate(date.getDate() + 1);
- var dt = (date.getMonth() + 101 + '月').substr(1);
- dt += (date.getDate() + 100 + '日').substr(1);
- dt += ' 星期' + '日一二三四五六'.charAt(date.getDay());
- if(s != dt){return 1}else return 0
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |