windows - Konverter brugerindgang til små bogstaver i batchfil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skal konvertere brugerindgang fra cmd til små bogstaver, før mit script kan bruge det, så jeg kan bruge det i en If-sætning, men jeg ved ikke præcis, hvordan jeg forsøgte at sammenligne input med de mest almindelige input, som brugeren Må skrive, men jeg vil dække alle muligheder.


her er koden jeg skrev hidtil:


set colour=Default
echo Please choose one of the supported colours for the name(Red,Blue or 
Green)
       :WrongColour
   set /p colour=
                if \%colour\%== Red   (
                                 goto :SuportedColour
)          else if \%colour\%== red   (
                                     goto :SuportedColour
)          else if \%colour\%== RED   ( 
                                     goto :SuportedColour
)          else if \%colour\%== Blue  (
                                      goto :SuportedColour
)          else if \%colour\%== blue  (
                                      goto :SuportedColour
)          else if \%colour\%== BLUE  (
                                      goto :SuportedColour
)          else if \%colour\%== Green (
                                      goto :SuportedColour
)          else if \%colour\%== green (
                                      goto :SuportedColour
)          else if \%colour\%== GREEN (
                                      goto :SuportedColour
)


Er der en meget nemmere måde at konvertere alt til små bogstaver, så jeg kan sammenligne med det og fortsætte til næste trin i mit script, hvis ja?

Bedste reference


Den if /I swhich er, hvad du vil:


@echo off
set colour=Default
set /p "colour=Please choose one of the supported colours for the name(Red,Blue or Green)"
if  /i "\%colour\%" == "red" goto :SupportedColour
if  /i "\%colour\%" == "blue" goto :SupportedColour
if  /i "\%colour\%" == "green" goto :SupportedColour
echo \%colour\% is not supported..
goto :EOF
:SuportedColour
echo You chose a supported colour: \%colour\%


Jeg ser dog, at du kun har 1 etiket du goto, som er SupportedColour, så jeg formoder, at du kun vil bruge en enkelt etiket, hvis nogen af ​​disse farver er det, der er indtastet. Derfor kan en for-loop være en bedre mulighed:


@echo off
set colour=Default
set "mycolours=blue red green"
set /p "colour=Please choose one of the supported colours for the name(Red,Blue or Green)"
for \%\%i in (\%mycolours\%) do if /i "\%\%i" == "\%colour\%" goto :SupportedColour
echo \%colour\% is not supported
goto :EOF
:SupportedColour
echo You chose a supported colour: \%colour\%


Her behøver du heller ikke at have en goto heller, men jeg tilføjede det, da jeg er usikker på hvad resten af ​​din kode gør.