Batch file 为什么名称为0、1、2、3的环境变量引用。。。没有按预期工作?

Batch file 为什么名称为0、1、2、3的环境变量引用。。。没有按预期工作?,batch-file,plaintext,Batch File,Plaintext,我的批处理文件包含: @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=-

我的批处理文件包含:

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

有人知道该怎么做吗?

尽管您不应该使用前面建议的以数字开头的变量,但如果您不通过百分比展开变量,而是通过感叹号和延迟展开,则可以使代码正常工作:

@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" "-" "-"
"-" "-" "-" "-" "-"
"-" "-" "-" "-" "-"
这与上面显示的输出非常不同


那么,如果您想显示“当然没有引号”的值,为什么要包含引号
:\

切勿使用名称以十进制数字开头的变量,因为
%0
%1
%2
%3
等都被解释为!非常感谢,@aschpfl我尝试了一下。打开一个命令提示符窗口,运行
call/?
,你就知道为什么环境变量的名称以数字开头是个糟糕的主意了。@Racine我问的是连字符。不是代码中的引号。谢谢你的帮助。