[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 有没有检查批处理语法错误的工具?

谁知道有什么工具能检查所写批处理是否存在语法错误的吗?

https://www.robvanderwoude.com/
这个网站有可以检查的工具

TOP

试试这个  能检查大部分错误
但不能检测以参数执行命令的批处理文件和标记跳转检测
使用方法:把任意BAT文件拖入到本程序即可 支持多个文件 解决了空格文件读取出错的BUG

@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

:nod
if "!r:~0,1!" equ " " (set r=!r:~1,1023!&set r2=!r!&call :nod) else (Goto :EOF)

TOP

notepad++
语法高亮很好用,支持宏,还以直接cmd运行

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

cmd
***共同提高***

TOP

返回列表