0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-05-29

暇つぶし程度に作った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 <ファイル名> <拡張子>
# ファイル名が返ってくる
#
# =================================================== #

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?