コマンドプロンプトから Powershell で得た各種情報を取得する
1.コンピュータのOS Caption を取得
@echo off
rem (Get-WmiObject Win32_OperatingSystem).Caption
FOR /F "usebackq delims=" %%A IN (`powershell "(Get-WmiObject Win32_OperatingSystem).Caption"`) DO set result=%%A
echo %result%
2.現在の日付取得
for /F %%i in ('powershell (Get-Date^).ToString('yyyyMMdd_HHmm_ss_fff'^)') do (
set dayago=%%i )
3.n日前の日付を取得する
for /F %%i in ('powershell (Get-Date^).AddDays(-2^).ToString('yyyyMMdd'^)') do (
set dayago=%%i )
echo %dayago%
4.nか月前の年月を取得する
for /F %%i in ('powershell (Get-Date^).AddMonths(-1^).ToString('yyyyMd'^)') do (
set SENGETSU=%%i
)
echo nヶ月前は%SENGETSU%
5-1.nか月前の月末を取得する
rem 先月末の月末日
for /F %%i in ('powershell (Get-Date -Day 1^).AddDays(-1^).ToString('yyyyMMdd'^)') do (
set GETSUMATSU=%%i
)
rem Addmonths を変更 -2 であれば -3ヶ月前の日付となる
for /F %%i in ('powershell (Get-Date -Day 1^).AddMonths(-2^).AddDays(-1^).ToString('yyyyMMdd'^)') do (
set GETSUMATSU=%%i
)
5-2.X日前の曜日を取得する
rem 日前の曜日
rem AddDays でX日前を設定
for /F %%i in ('powershell (Get-Date (Get-Date^).AddDays(-0^).ToString('yyyy/MM/dd'^)^).DayOfWeek^') do (
set Week1=%%i
)
set whatday=%Week1:~0,3%
if %WHATDAY%==Sun SET WDAY=1_SUN
if %WHATDAY%==Mon SET WDAY=2_MON
if %WHATDAY%==Tue SET WDAY=3_TUE
if %WHATDAY%==Wed SET WDAY=4_WED
if %WHATDAY%==Thu SET WDAY=5_THU
if %WHATDAY%==Fri SET WDAY=6_FRI
if %WHATDAY%==Sat SET WDAY=7_SAT
echo %WDAY%
6.会計期間の年度を取得する powershell
下記参照
rem 会計年度開始月から-1 した値を当月から除算し、その年を取得する
rem 今月を確認 4月開始の場合
for /F %%i in ('powershell (Get-Date^).AddMonths(-3^).ToString('yyyy'^)') do (
set KAIKEI=%%i
)
rem 前月最終日
for /F %%i in ('powershell (Get-Date -Day 1^).AddDays(-1^).ToString('yyyyMMdd'^) ') do (
set KAIKEI3=%%i
)
echo &KAIKEI3&
rem 応用
rem 先月の月次処理を確認 3月開始の場合の期首
for /F %%i in ('powershell (Get-Date -Day 1^).AddMonths(-3^).ToString('yyyy'^)') do (
set KISHU=%%i
)
set KISHU=%KISHU%/03/01
rem 先月の月次を確認 3月開始の場合の期末
for /F %%i in ('powershell (Get-Date -Day 1^).AddMonths(+9^).ToString('yyyy'^)') do (
set KIMATSU=%%i
)
set KIMATSU=%KIMATSU%/03/01
echo %KAIKEI%
rem 今期の期末
echo %KAIKEIW%
for /F %%i in ('powershell (Get-Date %KIMATSU%^).AddDays(-1^).ToString('yyyy/MM/dd'^)') do (
set KIMATSU=%%i
)
7.ファイルのタイムスタンプ取得 powershell
for /F %%i in ('powershell (Get-ItemProperty file01.TXT^).LastWriteTime.ToString('yyyyMMdd_HHmm_ss'^)') do (
set file2=%%i
)
for /F %%i in ('powershell (Get-ItemProperty file02.TXT^).LastWriteTime.ToString('yyyyMMdd_HHmm_ss'^)') do (
set file1=%%i
)
if %file1% GTR %file2% (
GOTO A
) else if %file1% EQU %file2% (
GOTO B
) else (
GOTO C
)
:A
echo file01.txt が%file1% で新しい
GOTO END
:B
echo "両方とも同じ"
GOTO END
:C
echo file02.txt が%file2% で新しい
GOTO END
:END
8.ファイルサイズ取得 powershell
for /F %%i in ('powershell (Get-ChildItem .\work\file01.TXT^).Length') do (
set filefize=%%i
)
コマンドプロンプトから powershell 月名を取得