Цитата jester7:
почему ставятся проценты, а иногда восклицательные знаки ? »
|
И то, и другое означает раскрытие указанной переменной окружения. Разница в том, что «%…%» раскрывает переменную окружения сразу, в момент разбора команды, а «!…!» — в момент исполнения. В первую очередь это сказывается на операторных скобках — поскольку операторные скобки воспринимаются интерпретатором команд именно как одна единая команда. Например, в Вашем случае:
Цитата jester7:
Код: 
For /F "usebackq tokens=* delims=" %%i In ("list.txt") Do (
set d=%i:~0,1%
if %d%== * @echo STROKA= %%i %d%
)
»
|
«%d%» раскрывается в момент интерпретации команды «for /f» и всё условие выглядит как:
Код:

if == * @echo STROKA= %%i
поскольку в этот момент переменная окружения «d» ещё не существует. Именно для этого вводится понятие
отложенного раскрытия переменных окружения, активизируемое командой «setlocal enabledelayedexpansion», а сама переменная окружения для этого обрамляется не символами «%», а «!».
Цитата jester7:
почему иногда два процента перед переменной, »
|
Это специальные переменные цикла «for». Они не являются переменными окружения и в отличие от них — регистрозависимы. На самом деле символ процента один — просто внутри пакетных файлов символ процента при них должен удваиваться, отсюда и два символа «%» внутри пакетных файлов. А в командной строке будет один символ.
Цитата jester7:
а иногда окружают переменную с краев? »
|
Это обычные переменные окружения. Вы можете их увидеть по команде «set».
Цитата jester7:
почему иногда значение текстовой переменной без двойных кавычек, а иногда как у вас с кавычками ? почему !s:~0,1! - в кавычках ?»
|
В пакетных файлах все переменные окружения — строка. Никакими символами строка не выделяется, в том числе и не обрамляется кавычками. В ряде случаев содержимое переменной окружения/переменной цикла может интерпретироваться как число.
В подобном случае:
Цитата Iska:
Код: 
if "!sVar:~0,1!" equ "*" echo %%i
»
|
кавычки обычно используются на случай отсутствия переменной окружения (когда она раскрывается в пустую строку), дабы условие оставалось корректным с точки зрения синтаксиса. Кавычки могут быть заменены, например, на «[» и «]» и т.п.
Цитата jester7:
почему echo - без собачки спереди ? (кажись понял, вывод на экран убран вначале кода... ЭХО ОФФ) »
|
Именно так.