Batch file 奇怪的全球技术法规批量错误

Batch file 奇怪的全球技术法规批量错误,batch-file,Batch File,我已经编写了一个批处理文件,它允许我通过输入详细信息来设置自定义ping请求,但是当我尝试运行它时,我可以毫无问题地输入IP地址,如果我输入exit,它将退出,但是当我输入数据包大小的数字时,它将在评估如果%size%GTR 4096时抛出意外错误 我已经看过这里的其他帖子,比如我能告诉你的代码应该可以工作。怎么了 :pinger_presub_error color echo Invalid input set size = 64 pause > nul :pinger title

我已经编写了一个批处理文件,它允许我通过输入详细信息来设置自定义ping请求,但是当我尝试运行它时,我可以毫无问题地输入IP地址,如果我输入exit,它将退出,但是当我输入数据包大小的数字时,它将在评估
如果%size%GTR 4096
时抛出意外错误

我已经看过这里的其他帖子,比如我能告诉你的代码应该可以工作。怎么了

:pinger_presub_error
color 
echo Invalid input
set size = 64
pause > nul

:pinger
title Pinger
color 0B
cls
echo Enter exit at any point to quit.
echo.
echo Enter IP Adress to ping:
set /p IPAdress=
if "%IPAdress%" == "exit" goto end
echo.
echo Enter packet size 8-4096, leave empty for default(64):
set /p /a size=
if "%size%" == "exit" goto end
if "%size%" == "" set size = 64
if %size% GTR 4096 (goto pinger_presub_error)
if %size% LSS 8 (goto pinger_presub_error)
echo.
echo Enter number of echos 1-20, leave empty for default(1):
set /p /a echos=
if "%echos%" == "exit" goto end
if "%echos%" == "" set echo = 1
if %echos% GTR 20 (goto pinger_presub_error)
if %echos% LSS 1 (goto pinger_presub_error)
cls
echo [Ctrl]+[C] to end
ping /l %size% /t /n %echos% %IPAdress%
goto end

:end
exit
使用
/p
提示用户,使用
/a
提示算术。代码询问用户,检索到的值存储在名为
/a size

          v .......space included in variable value
set size = 64
        ^ .........space included in variable name
更好地利用

set "size=64"
当然,还要更改代码其余部分中指出的问题。您的
echos
(也称为
echo
)变量也有相同的问题

set size = 64
使用
/p
提示用户,使用
/a
提示算术。代码询问用户,检索到的值存储在名为
/a size

          v .......space included in variable value
set size = 64
        ^ .........space included in variable name
更好地利用

set "size=64"
当然,还要更改代码其余部分中指出的问题。您的
echos
(也称为
echo
)变量也有相同的问题

set size = 64
将名为
size
的变量的值设置为
64

删除空格(或添加一个
/a
):

将名为
size
的变量的值设置为
64

删除空格(或添加一个
/a
):


+1、有趣。我知道SET/A会忽略右侧的空格,但我不知道它也会删除左侧的空格。很高兴知道。@dbenham是的-令人困惑。我希望不是这样。这就很难解释为什么
set
(没有
/a
)不喜欢空格。但是左/右对称对于以下表达式很方便:
set/ax*=(y+=1)
。在优化批处理游戏以提高速度时,我曾经在一个表达式中使用过双重赋值(没有空格)。@dbenham。。。有一个原因,为什么我记得你是“DOZ的向导”:D+1,很有趣。我知道SET/A会忽略右侧的空格,但我不知道它也会删除左侧的空格。很高兴知道。@dbenham是的-令人困惑。我希望不是这样。这就很难解释为什么
set
(没有
/a
)不喜欢空格。但是左/右对称对于以下表达式很方便:
set/ax*=(y+=1)
。在优化批处理游戏以提高速度时,我曾经在一个表达式中使用过双重赋值(没有空格)。@dbenham。。。有一个原因,为什么我记得你是“DOZ的向导”:D