关于循环遍历环境变量但寻找其中的第一个字符

时间:2015-11-16 00:56:07

标签: batch-file cmd

我写了这段代码,

set /p Letter=Enter your FavoriteLetter:
if "%1" == "" (
   echo Usage: Enter Your Birth Date EX. (November)  
   exit /b 1
) 

setlocal enableDelayedExpansion

我想做的是获取他们输入的用户信,并使用for循环遍历所有环境变量,然后返回我发现从他们输入的给定字母开始的数量。如果你有时间,请向我解释,我想学习以及找出答案。

2 个答案:

答案 0 :(得分:1)

试试这样:

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

答案 1 :(得分:0)

@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后的一个字符(即仅第一个字符)
  • 使用该字母的参数执行set,该参数列出从此开始的所有变量。 2>nul可以抑制错误。
  • 将'set'的输出传递给find并计算(/c)包含=的行。
  • 将输出分配到count
  • 报告