github BatchLang/Blinter v1.1.63

3 hours ago

[1.1.63] - 2026-11-04

Changed

  • The install and uninstall script lint fails on every severity. A finding that should remain is suppressed on that line with REM LINT:IGNORE, or for both scripts with disabled_rules in scripts/blinter.ini. where blinter ignores W009 because that command is how the installer sees which copy PATH will run
  • The MegaLinter install pin is 1.1.63

Fixed

  • W007 warns on copy, move, del, erase, ren, and rename of a path under \Windows\, \System32\, or \Program Files, including those directories written as %WINDIR%, %SYSTEMROOT%, or %ProgramFiles%. A user-profile .exe or .dll, including one the script has already stopped, is no longer a locked-file warning
  • W067 still warns when SET replaces PATH or assigns another system variable such as USERNAME. SET "PATH=%PATH%;directory" keeps the existing search path. SET "PATH=!PATH!;directory" does too, while delayed expansion is enabled
    A %PATH% or !PATH! in a later command on the same line does not hide a replacement, and a later SET that does replace PATH still warns
    SET /P and SET /A still warn when the prompt or expression mentions %PATH%. ECHO SET USERNAME=demo is not an assignment. An IF EXIST operand such as echo.txt does not hide the SET after it. SET "NOTE=Please set PATH=C:\Tools" does not assign PATH
    SET PATH="%PATH%";directory still warns, because those quotes are part of the value. FOR %%i in (1) do SET PATH=C:\only-this still warns. %PATH%suffix still warns because it changes the last search directory
  • P001 no longer pairs an IF EXIST with the IF EXIST on the other side of ELSE, including a check in the ELSE body and a check on the line after ELSE (. A closed ELSE block does not hide a later check of the same file
    A longer path, a different quoted path that shares a first word, or ELSE IF EXIST printed by ECHO, is not treated as the same file
  • P016 warns when an executed SET inside a FOR loop reads the variable it assigns (%NAME%, !NAME!, or a substitution of that name) or repeats one FOR metavariable. SET VALUE=%%a, SET VALUE=%OTHER%, ECHO SET result=!result! and REM SET result=!result! are not concatenation
    An IF EXIST operand such as echo.txt does not hide a later SET. SET result="!result!" still warns
  • P017 compares the full IF EXIST operand with other IF EXIST lines. %DIR% is not the same check as %DIR%.zip or %DIR%\child
  • P022 warns for an unescaped >nul in a FOR body, including for %%i in (1) do dir >nul. A caret-escaped redirect or one inside the IN command, such as in ('cmd /c echo 5 2^>nul'), runs once and is not reported

Don't miss a new Blinter release

NewReleases is sending notifications on new releases.