@echo off
mode con cols=79 lines=50
title Bat Test
::把开启延缓环境变量放到后面 使%*第一个带有空格的文件拖入时不退出
set `=%*
set gc=0
setlocal enabledelayedexpansion
echo;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
::获取dos内部命令
for /f %%i in ('help^|findstr "^[A-Z]"') do (set ml=!ml!%%i )
set ml=%ml%: ^( ^) ^^
::开始扫描
for %%a in (%`%) do (set fy=
::检查%%a变量是不是参数
if "%%~a" neq "%%~nxa" (
::检查%%a格式是否为bat
if /i "%%~xa" equ ".bat" (
for /f "delims= " %%b in (%%~sa) do (
::检查文件是否符合要求[EXE 和 0KB的 淘汰]
if not defined %%b (
::检查是否已经检查
if not defined fy (
::开始检查
set/a gc+=1
call :fy %%~sa
set fy=y
)
)
)
)
)
)
pause
exit
:fy
set/a "w=0,jgs=0,cws=0,rz=0,ry=0"
::开始检测%1
echo;&echo; 加载%1中&echo;
for /f "delims=" %%c in (%1) do (
set/a w+=1&set r2=%%c&set r=%%c
::删除空格
call :nod
for %%d in (!ml!) do (set r2=!r2:%%d=!)
set w!w!=!r!&if /i "!r2!"=="!r!" (if "!r3:~-1!" neq "^" (echo;%%c 不是内部命令&set/a jgs+=1))
set r3=%%c
)
for /l %%c in (1,1,!w!) do (
if "!w%%c:~0,1!" neq "" (
if "!w%%c:~0,1!" equ "(" (if !rz! equ 1 (echo;列:%%c 使用^( 时错误&set/a cws+=1) else (set/a "rz=1,zz+=1")) else (set w%%c=!w%%c:~1,1023!)
if "!w%%c:~0,1!" equ ")" (if !rz! equ 1 (echo;列:%%c 使用^) 时错误&set/a cws+=1) else (set/a "ry=1,zz-=1")) else (set w%%c=!w%%c:~1,1023!)
)
)
echo;&echo; 工程:!gc! 测试结束 警告数量:!jgs! 错误数量:!cws!&echo;
echo;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Goto :EOF