简体   繁体   中英

Windows Command Prompt Batch File - Variable Not Getting Set

I am attempting to write a batch file that will, eventually, create a file with a name based upon the current month. However, I have already encountered some problems. I am attempting to use a if/elseif statements to set a variable that contains the month name as a string with no success. It merely echos "" to the screen instead of the month name.

    @echo OFF
set month-num=%date:~4,2%
if "%month-num%" == "01" then set month_txt="January" else if "%month-num%" == "02" then set month_txt="February" else if "%month-num%" == "03" then set month_txt="March" else if "%month-num%" == "04" then set month_txt="April" else if "%month-num%" == "05" then set month_txt="May" else if "%month-num%" == "06" then set month_txt="June" else if "%month-num%" == "07" then set month_txt="July" else if "%month-num%" == "08" then set month_txt="August" else if "%month-num%" == "09" then set month_txt="September" else if "%month-num%" == "10" then set month_txt="October" else if "%month-num%" == "11" then set month_txt="November" else if "%month-num%" == "12" then set month_txt="December"
@echo "%month_txt%"
timeout /t -1

I would really appreciate any guidance; I am not too familiar with this form of programming.

I suggest you to use another method to get the month name; for example, via an array :

@echo OFF
setlocal EnableDelayedExpansion

rem Initialize month names based on two-digits numbers
set i=100
for %%a in (January February March April May June July August September October November December) do (
   set /A i+=1
   set month[!i:~1!]=%%a
)

set month-num=%date:~3,2%

set month-txt=!month[%month-num%]!

echo "%month-txt%"
timeout /t -1

If you are able to add a script to your machine from the Internet, I have been successful using getTimestamp.bat from http://www.dostips.com/forum/viewtopic.php?t=4847 .

C:>type t.bat
CALL getTimestamp.bat -F "{MONTH}"

FOR /F "usebackq tokens=*" %%m IN (`getTimestamp.bat -F "{MONTH}"`) DO (SET "MONTH_NAME=%%m")
ECHO MONTH_NAME is set to %MONTH_NAME%

The result of running it is:

 9:34:08.95  C:\src\bat
C:>call t.bat

 9:34:15.87  C:\src\bat
C:>CALL getTimestamp.bat -F "{MONTH}"
August
MONTH_NAME is set to August

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM