Хотя вам не следует использовать переменные с именами, которые начинаются с цифры, как предлагалось ранее, вы можете заставить свой код работать, если вы не расширяете переменные через проценты, а через восклицательный знак и расширение с задержкой:
@echo off
setlocal EnableDelayedExpansion
:default_grid
set "0=-"
set "1=-"
set "2=-"
set "3=-"
set "4=-"
set "10=-"
set "11=-"
set "12=-"
set "13=-"
set "14=-"
set "20=-"
set "21=-"
set "22=-"
set "23=-"
set "24=-"
set "30=-"
set "31=-"
set "32=-"
set "33=-"
set "34=-"
set "40=-"
set "41=-"
set "42=-"
set "43=-"
set "44=-"
set pos=22
if %pos% EQU 22 set "22=O"
:grid
echo.
echo "!0!" "!10!" "!20!" "!30!" "!40!"
echo "!1!" "!11!" "!21!" "!31!" "!41!"
echo "!2!" "!12!" "!22!" "!32!" "!42!"
echo "!3!" "!13!" "!23!" "!33!" "!43!"
echo "!4!" "!14!" "!24!" "!34!" "!44!"
echo.
pause >nul
Однако вывод этой программы таков:
"-" "-" "-" "-" "-"
"-" "-" "-" "-" "-"
"-" "-" "O" "-" "-"
"-" "-" "-" "-" "-"
"-" "-" "-" "-" "-"
Это очень отличается от вывода, который вы показываете выше ...
Итак, если вы хотите показать значения "без кавычек, конечно" , почему вы включили кавычки? :\