暇つぶし程度に作ったlogファイル等を作る際に必要なフォルダ、ファイル生成とlogファイル名に生成時間を付与するスクリプトです。
PSv5では動作していますが、ほかVerで動作するかは不明です。
ソース
CreateItem.ps1
# FileName:CreateItem.PS1
# CreateName:Kairi_Hatoba
# Date:2019.05.29
# ┌────────────────────────────────────────────┐
#
# フォルダ/ファイルの存在確認・生成処理関数
#
# └────────────────────────────────────────────┘
function global:CHK_Item($TgItemPath,$TgItemFile){
# TgItemPath = フォルダパス
# TgItemFile = ファイル名
# フォルダ/ファイルが引き渡されているか確認する。
# 無ければERRを返し、LOGファイルを生成
#フルパスの合成
$TgItemFullPath = $TgItemPath +"\"+ $TgItemFile #ターゲットパスの合成(ディレクトリ+ファイル名)
$DirFlg = $false #ディレクトリフラグ TURE = 作成の要有、FALSE = 作成の要無
$FileFlg = $false #ファイルフラグ TURE = 作成の要有、FALSE = 作成の要無
$RemFlg = $false #削除フラグ TURE = 削除の要有、FALSE = 削除の要無
# --- フォルダ/ファイル存在有無確認、及びフォルダ/ファイル生成 Start --- #
#--- フォルダ/ファイル存在有無確認処理 Start ---#
#フォルダの存在確認
switch(Test-Path $TgItemPath){
#フォルダが存在する場合
TRUE{
#ファイルの存在確認
switch(Test-Path $TgItemFullPath){
TRUE{
#ファイルがある場合(ファイルの削除、生成)
$RemFlg = $true
$FileFlg = $true
}
FALSE{
#ファイルがない場合(ファイルの生成)
$FileFlg = $true
}
}
}
#フォルダが存在しない場合
FALSE{
$DirFlg = $true
$FileFlg = $true
}
#それ以外の処理
default{
Write-Host "ERR"
CreateItem FALSE ".\ERR.log"
"$DirFlgにて、TRUE/FALSE以外のものが入っていた為" >> ".\ERR.log"
exit
}
}
#--- フォルダ/ファイル存在有無確認処理 End ---#
#--- フォルダ/ファイル生成処理 Start ---#
if($DirFlg -eq $true){
New-Item $TgItemPath -ItemType Directory
}
if($RemFlg -eq $true){
Remove-Item $TgItemFullPath
}
if($FileFlg -eq $true){
New-Item $TgItemFullPath
}
#--- フォルダ/ファイル生成処理 End ---#
# --- フォルダ/ファイルの存在確認、及びフォルダ/ファイル生成 End --- #
}
# ■概要
# フォルダ or ファイルの確認関数
# ターゲットパス直下のファイル、またはフォルダがないか確認し、
# 確認結果を自動でフォルダ/ファイル生成関数に引き渡してくれる。
# ※直下のものしか確認してない為、途中からないものについては
# 一切処理しない。
# ■引数解説
# ①引数:TgItemPath 対象フォルダ名(パスも含む)
# ②引数:ITgItemFile ファイル名
#
# ■使い方
# 最初にCreateItem.ps1を呼ぶ
# CHK_Item <対象フォルダ名> <対象ファイル名>を入れる
#
# <Sample>
# .\Createitem.ps1
#
# CHK_Item ".\Desktop" "Sample.txt"
#
#
# =================================================== #
# ┌──────────────────────────┐
#
# フォルダ/ファイル生成
#
# └──────────────────────────┘
function global:CreateItem($DirFlg,$ItemName){
switch($DirFlg){
TRUE{
New-Item $ItemName -ItemType Directory
}
FALSE{
New-Item $ItemName
}
}
}
# ■概要
# フォルダ or ファイルの生成関数
# DirFlgで管理し、関数で必要な引数を渡せば
# 自動でフォルダ/ファイルを生成してくれる。
#
# ■引数解説
# ①引数:DirFlg ディレクトリ(フォルダ)生成フラグ
# TRUE → ディレクトリを生成
# FALSE → ファイルを生成
# ②引数:ItemName アイテム名(パスを含む)
# ■使い方
# 最初にCreateItem.ps1を呼ぶ
# CreateItem <DirFlg> <対象パス(ファイル名)>を入れる
#
# <Sample>
# .\Createitem.ps1
#
# 1.フォルダの場合
# CreateItem TRUE "Sample"
# 2.ファイルの場合
# CreateItem FALSE ".\Sample.txt"
#
# =================================================== #
# ┌──────────────────────────┐
#
# 時間付きファイル名の取得
#
# └──────────────────────────┘
Function global:AddCreateItemNameTime($ItemName){
$GetTime = Get-Date -Format "yyyymmdd-HHmmss"
$GenerateName = $ItemName+"_Date" + $GetTime
return $GenerateName
}
# ■概要
# 時間を取得して決めたファイル名と拡張子(.*)を引数で渡し、
# ファイル名として合成する。
#
# ■使い方
# AddCreateItemNameTime <ファイル名> <拡張子>
# ファイル名が返ってくる
#
# =================================================== #