Почему строковое манипулирование работает inline в выражении if без использования переменных с задержкой расширения, но в противном случае не работает. Например:
set test=testString
if %test:~0,4%==test echo Success
Это работает правильно; возвращая Success
. Однако, если я сделаю следующее:
setLocal enableDelayedExpansion
set test=testString
if !test:~0,4!==test echo Success
Я получаю сообщение об ошибке - 4!==test was unexpected at this time.
Очевидно, вы можете обойти это, сделав что-то вроде set comp=!test:~0,4!
, а затем просто используя переменную !comp!
в инструкции if.