LoginSignup
1
4

More than 3 years have passed since last update.

【PowerShell】バックアップファイルを作成するスクリプト

Last updated at Posted at 2019-12-06

1.この記事について

こんなケースを想定。
《バックアップファイルを簡単に作成したい》
《日付ごとにファイルを分けて進捗をチェックしたい》

※Git等のリポジトリが使える環境ならおそらくそっちを使ったほうがいいです。
リポジトリが使えない、もしくは使うまでもない簡易なファイルに対しての場合はなかなか有用かと思われます。
いちいち日付を入力するのはめんどくさいので。

2.やりたいこと

①バックアップファイルを作成したい。

②引数が間違っている場合、ファイルが存在しない場合に警告表示したい。

③日付の文字列を付与していつ作成したのかわかりやすくしたい

3.作成したコード

make_backup.ps1
Param(
    [string]$sourceFilePath ,  # バックアップするファイルのパス
    [string]$destDirectoryName = 'Backup'   # バックアップ先のフォルダ名.デフォルトが設定されている.
    )

#第一引数がなければ警告表示
if ([string]::IsNullorEmpty($sourceFilePath))
{
    Write-Host "次の形式で引数を入力してください。`r`nmake_backup.sp1 [引数1:バックアップするファイルのパス][引数2(省略可):バックアップ先のフォルダ名]"
    exit
}


#第一引数のファイル名が存在するかどうか調査する。
if (!(Test-Path -LiteralPath $sourceFilePath))
{
    Write-Host 'ファイル名が存在しません。'
    exit
}

#カレントディレクトリに第二引数のフォルダが存在しなければ作成する。
if (!(Test-Path  -LiteralPath ./$destDirectoryName))
{
    New-Item ./$destDirectoryName -ItemType Directory
}

#ファイルパスからファイル名取得
$sourceFileName = [System.IO.Path]::GetFileName($sourceFilePath) 

#年月日・時間・分・秒の取得
$today   = Get-Date -Format "yyyyMMdd_HHmmss_"

#コピー先のパスを作成
$destinationFilePath = './' + $destDirectoryName + '/' + $today + $sourceFileName

#コピー実行
Copy-Item -path $sourceFilePath -Destination $destinationFilePath

exit

4.コードの解説

スクリプトの引数について

第二引数は初期値があるため、
もし入力しなければ
カレントディレクトリの「Backup」フォルダにバックアップファイルが作成される。

[string]::IsNullorEmpty($sourceFilePath)について

引数に対してnullか空欄ならFalseを返す。

作成されるファイル名について

例えばtest.txtというファイルを引数に取ると、
20191206_225012_test.txtというファイルが新しく作成される。

5.終わりに

なにか補足がありましたらコメントください。

1
4
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
1
4