Почему ссылки на переменные окружения с именами 0, 1, 2, 3, ... не работают должным образом? - PullRequest
0 голосов
/ 10 сентября 2018

Мой пакетный файл содержит:

@echo off

: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

Мне трудно понять, что я делаю неправильно.
У меня есть 25 переменных, которые потенциально должны отображать -.

То, что я хочу увидеть:

- - - - -
- - - - -
- - - - -
- - - - -
- - - - -

Но вместо этого я вижу:

"C:\Users\MuggyYak\Desktop\5x5.bat"10203040"
"11213141"
"12223242"
"13233343"
"14243444"

Кто-нибудь знает, что делать?

1 Ответ

0 голосов
/ 11 сентября 2018

Хотя вам не следует использовать переменные с именами, которые начинаются с цифры, как предлагалось ранее, вы можете заставить свой код работать, если вы не расширяете переменные через проценты, а через восклицательный знак и расширение с задержкой:

@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" "-" "-"
"-" "-" "-" "-" "-"
"-" "-" "-" "-" "-"

Это очень отличается от вывода, который вы показываете выше ...

Итак, если вы хотите показать значения "без кавычек, конечно" , почему вы включили кавычки? :\

...