thumbnail 一問一答の一歩

windowsでlinux風のdateコマンド

DateコマンドはWindowsにもlinuxにもあるのですが、バッチファイルを使って反復して処理をしていると、linuxのdateコマンドのようにで現在時刻を取得できると便利だなぁと思って作成してみたのでメモ

dateコマンドを再現するためのソース

@ echo off
set str=%~1
set len=0

:LOOP
if not "%str%"=="" (
    set str=%str:~1%
    set /a len=%len%+1
    goto :LOOP
)
if "%~1"=="-s" (
date 
) else if "%~1"=="/t" (
date %1 %2
) else if %len%==10 (
date %1 %2
) else (
setlocal enabledelayedexpansion
set RESULT=
for /f "usebackq tokens=*" %%i in (`call date /t`) do (
    set RESULT=!RESULT!%%i
)
for /f "usebackq tokens=*" %%i in (`call powershell.exe -Command "(Get-Date).DayOfWeek -as [int]"`) do (
    if %%i == 0 (
	set RESULT=!RESULT!日曜日 
	) else if %%i == 1 (
	set RESULT=!RESULT!月曜日 
	) else if %%i == 2 (
	set RESULT=!RESULT!火曜日 
	) else if %%i == 3 (
	set RESULT=!RESULT!水曜日 
	) else if %%i == 4 (
	set RESULT=!RESULT!木曜日 
	) else if %%i == 5 (
	set RESULT=!RESULT!金曜日 
	) else if %%i == 6 (
	set RESULT=!RESULT!土曜日 
	) else if %%i == 7 (
	set RESULT=!RESULT!日曜日 
	) 
)
for /f "usebackq tokens=*" %%i in (`echo %time:~0,8%`) do (
    set RESULT=!RESULT!%%i
)
echo !RESULT!
endlocal
)

なお、ソース作成にあたって下記のリンクを参考にしています。

Windowsバッチファイル(.bat)、文字数を取得する|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

問題ページに戻る