标题: [文本处理] 批处理怎样在文本中找出字符并提示? [打印本页]
作者: 灯塔彭于晏 时间: 2021-2-5 11:07 标题: 批处理怎样在文本中找出字符并提示?
先谢谢您了,祝您新年快乐。
现在有一个文本(已经上传到附件中),内容如下:- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- 正常情况下的结构:[#人员信息 - [部分信!息] - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信!息 - 编号:82946905]
- <p><img src="https://gongsi.com/small/8A1050343.jpg"/></p>
- 正常情况下的结构:[#人员信息 - 部分信息] - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- 正常情况下的结构:[#人员信 - 息 - 部分信息 - 编号:82946905]
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
复制代码
要求:- 如果每行里出现2个以上的 - 符号就提示。(正常数量是2个,不能是1个或者3 4 5 ……个)!最好是能提示在XX行。
- 正常情况下的结构:[#人员信息 - 部分信息 - 编号:82946905]
-
-
- 如果每行里,除了开头和结尾的[ ] 以外,又出现了[ 或者 ] ,就提示在XX行。
- 比如(位置不固定,仅仅是举例。):
- [#人员信息 - [部分信息] - 编号:82946905]
- 正常情况下的结构:
- [#人员信息 - 部分信息 - 编号:82946905]
-
- 如果每行内容中,small/81050343.jpg 中间的内容不是纯数字,就提示!
- 正常情况下的结构:
- <p><img src="https://gongsi.com/small/81050343.jpg"/></p>
- 不正常(有时候也有字符、汉字等……):
- <p><img src="https://gongsi.com/small/810A503V43.jpg"/></p>
复制代码
为了方便测试,我上传了文本在附件里,谢谢您了。
作者: went 时间: 2021-2-5 12:25
- //&cls&cd /d "%~dp0" & @cscript -E:javascript -Nologo "%~0" &pause&exit
- var txt = '222333.txt';
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var ifs = fso.OpenTextFile(txt,1);
- var lineNum=0,line,matchs;
- while(!ifs.AtEndOfLine){
- ++lineNum;
- line = ifs.ReadLine();
- //如果每行非2个 - 符号就提示
- matchs = line.match(/-/g);
- if(matchs != null && matchs.length != 2)
- WSH.Echo('' + lineNum + ':\t' + line);
- //如果每行里,除了开头和结尾的[ ] 以外,又出现了[ 或者 ] ,就提示
- if(line.match(/(?!^)[\[\]](?!$)/) != null)
- WSH.Echo('' + lineNum + ':\t' + line);
- //如果每行内容中,small/81050343.jpg 中间的内容不是纯数字,就提示!
- matchs = line.match(/small\/(.*?)\.jpg/);
- if(matchs != null && matchs[1] != null)
- if(!/^\d+$/.test(matchs[1]))
- WSH.Echo('' + lineNum + ':\t' + line);
- }
- ifs.Close();
复制代码
作者: 灯塔彭于晏 时间: 2021-2-5 13:10
回复 2# went
您好,就这么一直弹窗,内容有时候是正确的内容,有时候是需要纠错的错误格式的内容。
能否最后输出个TXT,逐行记录出错的内容所在的行数?
比如
end.txt里- 第8行出现[ ]
- 第9行出现!
- 第X行出现非数字名……
复制代码
作者: went 时间: 2021-2-5 13:19
回复 3# 灯塔彭于晏
保存bat
作者: went 时间: 2021-2-5 13:28
写入end.txt- //&cls&cd /d "%~dp0" & @cscript -E:javascript -Nologo "%~0" &pause&exit
- var txt = '222333.txt';
- var result = 'end.txt';
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var ifs = fso.OpenTextFile(txt,1);
- var ofs = fso.OpenTextFile(result,2,true);
- var lineNum=0,line,matchs,fmtLine;
- while(!ifs.AtEndOfLine){
- ++lineNum;
- line = ifs.ReadLine();
- //如果每行非2个 - 符号就提示
- matchs = line.match(/-/g);
- if(matchs != null && matchs.length != 2){
- fmtLine = '' + lineNum + ':\t非2个 - \t\t' + line;
- WSH.Echo(fmtLine);
- ofs.WriteLine(fmtLine);
- }
- //如果每行里,除了开头和结尾的[ ] 以外,又出现了[ 或者 ] ,就提示
- if(line.match(/(?!^)[\[\]](?!$)/) != null){
- fmtLine = '' + lineNum + ':\t出现了[,]\t\t' + line;
- WSH.Echo(fmtLine);
- ofs.WriteLine(fmtLine);
- }
- //如果每行内容中,small/81050343.jpg 中间的内容不是纯数字,就提示!
- matchs = line.match(/small\/(.*?)\.jpg/);
- if(matchs != null && matchs[1] != null)
- if(!/^\d+$/.test(matchs[1])){
- fmtLine = '' + lineNum + ':\t非纯数字\t\t' + line;
- WSH.Echo(fmtLine);
- ofs.WriteLine(fmtLine);
- }
- }
- ifs.Close();
复制代码
作者: qixiaobin0715 时间: 2021-2-5 15:42
回复 1# 灯塔彭于晏
来个纯批吧:- @echo off
- set n=0
- setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=!" %%a in (222333.txt) do (
- set /a n+=1
- if not "%%b"=="" echo,第!n!行有感叹号。
- set "str1=%%a%%b"
- for /f "tokens=1,2* delims=[" %%i in ("!str1!") do if not "%%k"=="" echo,第!n!行有多余中括号。
- for /f "tokens=1-3* delims=-" %%m in ("!str1!") do if not "%%p"=="" echo,第!n!行有多余连接符。
- if not "!str1:*small/=!"=="!str1!" (
- set "str2=!str1:*small/=!
- for /f "tokens=* delims=0123456789" %%x in ("!str2!") do (
- set "str3=%%x"
- if not "!str3:~0,1!"=="." echo,第!n!行有错误图片名!str2:~0,8!。
- )
- )
- ))>result.txt
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |