我写了这个代码,
set /p Letter=Enter your FavoriteLetter:
if "%1" == "" (
echo Usage: Enter Your Birth Date EX. (November)
exit /b 1
)
setlocal enableDelayedExpansion
我想做的是取用户输入的字母,用for循环遍历所有环境变量,然后返回我找到的以他们输入的给定字母开头的数字。如果你有时间,请向我解释一下,我想学习并找出答案。
这样尝试:
setlocal enabledelayedexpansion
set "$c=0"
set /p "$Answer=Enter a letter : "
for /f "delims=" %%a in ('set %$Answer% 2^>nul') do (
set /a $c+=1
echo No !$c! ==^> %%a
)
if !$c!==0 goto:error
exit/b
:error
Echo Env. Var. : %$Answer% ==^> Not Defined
@ECHO Off
SETLOCAL
SET /p "letter=Choose a letter "
IF NOT DEFINED letter GOTO :eof
SET "letter=%letter:~0,1%"
FOR /f %%a IN ('2^>nul set %letter% ^|find /c "=" ' ) DO SET count=%%a
ECHO %count% variables START "%letter%"
GOTO :EOF
- 输入字母
- 将
letter
的值(如果已定义)设置为第0个字符后的一个字符(即仅第一个字符) - 用该字母的自变量执行CCD_ 2,该自变量列出了从其开始的所有变量。
2>nul
抑制错误 - 将"set"的输出通过管道传输到
find
,并对包含=
的行进行计数(/c
) - 将输出分配给
count
- 报告