コマンドプロンプト powershell 各種情報取得例

コンピュータの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%

 

powershell

今日の日付取得

for /F %%i in ('powershell (Get-Date^).ToString('yyyyMMdd_HHmm_ss_fff'^)') do (
set dayago=%%i )

 

X日前の情報取得

rem 2日前
for /F %%i in ('powershell (Get-Date^).AddDays(-2^).ToString('yyyyMMdd'^)') do (
set dayago=%%i )

Xnか月前の年月を取得する

for /F %%i in ('powershell (Get-Date^).AddMonths(-1^).ToString('yyyyMd'^)') do (
set SENGETSU=%%i
)

echo nヶ月前は%SENGETSU%

Xか月前の月末を取得する

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
)

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%

日付から曜日取得

rem 
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%

曜日を番号で取得

rem test 曜日取得
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%


for /f "usebackq delims=" %%A in (`powershell.exe -Command "(Get-Date (Get-Date).AddDays(-0) ).DayOfWeek -as [int]"`) do set DAYOFWEEK1=%%A
echo %DAYOFWEEK1%
set DAYWEEK2=0%DAYOFWEEK1%_%WHATDAY%

曜日を番号で取得(VBS風)

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%
)

for /f "usebackq delims=" %%A in (`powershell.exe -Command "(Get-Date (Get-Date).AddDays(-0) ).DayOfWeek -as [int]"`) do (
set DAYOFWEEK1=%%A
)

rem 変数確認
echo %DAYOFWEEK1%
set DAYWEEK2=0%DAYOFWEEK1%_%WHATDAY%

rem vbs週番号
if %whatday%==Sat set WDAY=07SAT
if %whatday%==Fri set WDAY=06FRI
if %whatday%==Thu set WDAY=05THU
if %whatday%==Wed set WDAY=04WED
if %whatday%==Tue set WDAY=03TUE
if %whatday%==Mon set WDAY=02MON
if %whatday%==Sun set WDAY=01SUN

echo %WDAY%

ファイルのタイムスタンプ取得

for /F %%i in ('powershell (Get-ItemProperty
test.txt^).LastWriteTime.ToString('yyyyMMdd_HHmm_ss'^)') do (
set file01A=%%i
)

sed コマンド メモ
https://sublimer.hatenablog.com/entry/2016/12/11/192100

---sed で記号つきを置換する例
for /F %%i in ('powershell (Get-Date^).ToString('yyyy\/MM\/dd'^)') do (
set wday2=%%i )
set wday=%wday2:~0,10%

sed "s*^*%wday%,*g" a.txt b.txt

コメント