关于在环境变量中循环,但在其中查找第一个字符



我写了这个代码,

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
  • 报告

最新更新