有一个文本文件,类似于csv逗号分割格式,现在想用统计每行逗号的个数的方法来检查文件内容是否被损坏,如何用cmd命令脚本来完成这个功能?
比如一个文件先检查第一行,有五个逗号,再检查第二行,如果不等于五个则报错。以此类推……
思路是用for结合findstr,可是还没想好怎么写,大家能帮个忙看看吗 谢了
比如一个文件先检查第一行,有五个逗号,再检查第二行,如果不等于五个则报错。以此类推……
思路是用for结合findstr,可是还没想好怎么写,大家能帮个忙看看吗 谢了
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@(echo 有错误的行:&more youtfile.txt|findstr /nvx "*,*,*,*,*,*")>err.txt
@echo off&setlocal enabledelayedexpansion
set file=newxso.txt
for /f "delims=" %%a in (%file%) do (
set/a m+=1 &set str=%%a &set str=!str: =#! &set str=!str:;=#!
for %%b in (!str!#) do set/a n+=1
set/a n-=1
if !m! equ 1 (set one=!n!
) else (
set/a other=!one!*!m!
if !other! neq !n! goto err
)
)
if %one% equ 0 goto err
echo %file% 中其它行的逗号数与第一行相同。
)
pause>nul
exit
:err
echo %file% 中其它行的逗号数与第一行不相同,或没有逗号。
pause>nul
exit
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (newxso.txt) do (
set/a n+=1
call :vbs "%%a"
if !n! equ 1 (set one=!num!) else (if !one! neq !num! goto err)
)
if %one% equ 0 (echo 没有逗号。) else (echo 逗号数相同。)
pause>nul
exit
:vbs
echo WSH.Echo UBound(Split("%~1",","))>tmp.vbs
for /f %%a in ('cscript //nologo /e:vbs tmp.vbs') do set num=%%a
del tmp.vbs
goto :eof
:err
echo 逗号数不同。
pause>nul