(広告)本ページはアフィリエイト広告を利用しており、プロモーションを含みます
毎日、特定のファイルをコピーして、翌日には日付を変更してファイルを作成する作業をPowerShellとタスクスケジューラを使用して自動化する方法を備忘録として残しておきます。
実行例は以下のようになります。
コピー元ファイル)
C:\Path\To\Source\FileName.txt
コピー先ファイル)
C:\Path\To\Source\FileName-yyyy-mm-dd.txt
環境
OS:Microsoft Windows 10 Pro
PowerShellの作成
PowerShellのファイルを作成します。
メモ帳などでファイルを作成したら、ファイル名を「ファイル名.ps1」とます。
サクラエディタなどでファイルを開きます。
以下のコードを記載して保存します。
# バックアップ元ファイル
$SourceFile = "C:\Path\To\Source\FileName.txt" # コピー元ファイルを指定
# バックアップ先フォルダ
$DestinationPath = "D:\Path\To\Backup"
# 日付付きファイル名を生成
$Date = Get-Date -Format "yyyy-MM-dd"
$FileName = [System.IO.Path]::GetFileNameWithoutExtension($SourceFile) # 元のファイル名 (拡張子なし)
$Extension = [System.IO.Path]::GetExtension($SourceFile) # 拡張子 (.txtなど)
# 日付付きの新しいファイル名
$NewFileName = "$FileName-$Date$Extension"
# 保存先の完全パス
$DestinationFile = Join-Path -Path $DestinationPath -ChildPath $NewFileName
# バックアップ先フォルダが存在しない場合は作成
if (!(Test-Path -Path $DestinationPath)) {
New-Item -ItemType Directory -Path $DestinationPath
}
# ファイルをコピー
Copy-Item -Path $SourceFile -Destination $DestinationFile -Force
Write-Host "バックアップ成功: $DestinationFile" -ForegroundColor Green
参考例として、「backup_00」の「test.txt」を「backup_01」へコピーします。
C:\Users\ユーザ名\Desktop\backup_00\test.txt
から
C:\Users\ユーザ名\Desktop\backup_00\test-yyyy-mm-dd.txt
と自動でファイルをコピーして作成されます。
タスクスケジューラの設定
Windowsの検索に、タスクスケジューラを入力して検索します。
タスクの作成をクリックします。
実行するタスクの名前をつけます。
実行する時間を指定します。
ここでは、毎日、「23:45」を指定しています。
プログラムの開始を選択します。
プログラムスクリプトに、「powershell.exe」を指定します。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
引数に、下記を指定します。
「C:\Scripts\DailyFileBackup.ps1」は、各自、作成したPowerShellのパスとファイル名を指定するよう修正して下さい
-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\DailyFileBackup.ps1"
登録内容を確認します。
失敗する場合は、「最上位の特権で実行する」にチェックをつけてみて下さい。
指定したフォルダに自動でファイルがコピーされるようになりました。
無効にする場合は、作成したタスクスケジューラを右クリックして、無効をクリックします。
状態が無効となりました。
これで特定のファイルを毎日バックアップする負担が多少でも減るようになりました。