コマンドプロンプトから 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

下記参照

年度を取得する方法[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 月名を取得

 

echo "# バッチファイルから呼び出される側のパワーシェルファイルです。" >month.ps1

echo $us = New-Object system.globalization.cultureinfo("en-US") >>month.ps1

echo "# 月の英語表記(省略された表記)を取得" >>month.ps1

echo (Get-Date).ToString('MMM',$us) >>month.ps1

 

 

for /F %%i in ('powershell -ExecutionPolicy Bypass -command .\month.ps1') do (

set monthname=%%i )

 

echo %monthname%

 

 

for /F %%i in ('powershell (Get-Date^).ToString('MM_'^)') do (

set month=%%i

)

 

echo %month%%monthname%