Вот одно различие, которое я обнаружил: EnableDelayedExpansion
- это требуется в .cmd
файлах.
Где, как в случае .bat
файлов, это неявно по умолчанию. ( Windows 10 )
dir *? | find /i "FOOBAR"
if ERRORLEVEL 0 (
set result="found" ) else (
set result="not found" )
echo %result%
Это работает в .bat
, но всегда found
в случае .cmd
файла.
Изменение line 2
на следующее заставляет его работать как положено:
if %ERRORLEVEL% equ 0 (
И, наконец, для файла .cmd
это работает правильно:
setLocal EnableDelayedExpansion
...
if !ErrorLevel! equ 1 (
...