2016-08-26 14 views
1

最終的に、現在の月に基づいた名前のファイルを作成するバッチファイルを作成しようとしています。しかし、私はすでにいくつかの問題に遭遇しています。 if/elseifステートメントを使用して、月名が文字列として含まれていて、成功しない変数を設定しようとしています。それは単に月名の代わりに画面に表示されます。Windowsのコマンドプロンプトバッチファイル - 変数が設定されていません

@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 

私は本当にご指摘ありがとうございます。私はこの形式のプログラミングにあまり慣れていません。

+0

_それは使用していますので、変数の名前を変更しようとする代わりに - 残念ながら – Ibrahim

+0

、動作しませんでしたという。しかし、ありがとう。 – KellyMarchewa

+0

バッチにはこのような 'elseif'コマンドはありません。 use: 'else if' – Aacini

答えて

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 
+0

参照:http://stackoverflow.com/a/18464353/ 452281 – jftuga

0

は、あなたがインターネットからあなたのマシンにスクリプトを追加することができるならば、私は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 
関連する問題