ファイル/フォルダ生成と時間付きファイル名作成スクリプト

暇つぶし程度に作ったlogファイル等を作る際に必要なフォルダ、ファイル生成とlogファイル名に生成時間を付与するスクリプトです。

PSv5では動作していますが、ほかVerで動作するかは不明です。

###ソース

```ruby: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 <ファイル名> <拡張子>
#ファイル名が返ってくる
#
# =================================================== #

```