批处理文件 - FOR / IF 语句中带有数字和文本的错误
Batch File - Error in FOR / IF statement with numbers and text
这些代码以前是有效的。我在 "FOR" 行中添加了一些额外的字母,但现在它不起作用了。
目标:获取用户输入。用户输入可以是数字或字母。将输入设置为 "SELECTION".
:choice1
A. 1-12
B. 1-7
1. stuff
2. more stuff
etc to 7
C. 8-10
8.
etc to 10
D. 11-12
11....
12...
SET /P c= Make a selection or eXit (X)...
CLS
IF /i %c%==X GOTO choice1
IF %A%==1 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D) DO (
IF /i #%c%==#%%I SET SELECTION=%c%
EXIT /B
)
IF %A%==2 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 13 A B C D) DO (
IF /i #%c%==#%%I SET SELECTION=%c%
EXIT /B
)
它没有将 SELECTION = %c% 设置为真。我假设它没有在应该返回 TRUE 的时候返回。这是以前的工作。我不明白发生了什么变化。原来的代码行是:
IF %A%==1 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 E) DO IF /i #%c%==#%%I SET SELECTION=%c% & EXIT /B
改变的是,在原来的代码中,SET SELECTION=%c% & EXIT /B
执行了IF /i #%c%==#%%I
。
使用您修改后的代码,SET SELECTION=%c%
会执行 IF /i #%c%==#%%I
并且无论如何都会执行 exit
。
轻松修复:
IF %A%==1 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D) DO IF /i #%c%==#%%I (
SET SELECTION=%c%
EXIT /B
)
但是请注意,selection
将有一个尾随 space 的原始代码,但显然没有修改后的代码。
这些代码以前是有效的。我在 "FOR" 行中添加了一些额外的字母,但现在它不起作用了。
目标:获取用户输入。用户输入可以是数字或字母。将输入设置为 "SELECTION".
:choice1
A. 1-12
B. 1-7
1. stuff
2. more stuff
etc to 7
C. 8-10
8.
etc to 10
D. 11-12
11....
12...
SET /P c= Make a selection or eXit (X)...
CLS
IF /i %c%==X GOTO choice1
IF %A%==1 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D) DO (
IF /i #%c%==#%%I SET SELECTION=%c%
EXIT /B
)
IF %A%==2 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 13 A B C D) DO (
IF /i #%c%==#%%I SET SELECTION=%c%
EXIT /B
)
它没有将 SELECTION = %c% 设置为真。我假设它没有在应该返回 TRUE 的时候返回。这是以前的工作。我不明白发生了什么变化。原来的代码行是:
IF %A%==1 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 E) DO IF /i #%c%==#%%I SET SELECTION=%c% & EXIT /B
改变的是,在原来的代码中,SET SELECTION=%c% & EXIT /B
执行了IF /i #%c%==#%%I
。
使用您修改后的代码,SET SELECTION=%c%
会执行 IF /i #%c%==#%%I
并且无论如何都会执行 exit
。
轻松修复:
IF %A%==1 FOR %%I IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D) DO IF /i #%c%==#%%I (
SET SELECTION=%c%
EXIT /B
)
但是请注意,selection
将有一个尾随 space 的原始代码,但显然没有修改后的代码。