Windows命令提示符批处理文件 - 未设置变量

时间:2016-08-26 21:10:36

标签: batch-file cmd

我正在尝试编写一个批处理文件,最终会创建一个名称基于当前月份的文件。但是,我已经遇到了一些问题。我试图使用if / elseif语句将包含月份名称的变量设置为字符串,但没有成功。它只是回显屏幕而不是月份名称。

    @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

我真的很感激任何指导;我对这种编程形式并不太熟悉。

2 个答案:

答案 0 :(得分:2)

我建议您使用其他方法获取月份名称;例如,通过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

答案 1 :(得分:0)

如果您能够从Internet向您的计算机添加脚本,我已成功使用http://www.dostips.com/forum/viewtopic.php?t=4847中的getTimestamp.bat。

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%

运行它的结果是:

 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