みなさんこんにちは、テラド(@terashin1226)です!
Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
前回はタスクスケジューラというWindowsの標準機能を使ってPowerShellのスクリプトを決まった日時に起動する設定方法をお伝えしました。
今回はタスクスケジューラとの組み合わせ抜群なファイルをバックアップするスクリプトの作り方をお伝えします。
大事なファイルは定期的にバックアップしておきたい…それが自動で実行されると作業漏れがなくなり、時間も節約できて一石二鳥ですよ!
それではいってみましょう!
前回のおさらい
Windowsには決まった日時にアプリケーションを実行するタスクスケジューラという機能が標準搭載されています。
前回はタスクスケジューラにて、毎週火曜日の22:10にPowerShellのスクリプトを起動する「ファイルバックアップ」という名前のタスクを作成しました。
PowerShellのスクリプトを起動したいときは、以下のようにPowerShellの実行ファイルとスクリプトのフルパスを指定するんでしたね。
記事中では話の流れ上タスクを作成してからスクリプトを作成します。
しかし、パスが誤っているとスクリプトが起動できませんので注意が必要です。
①スクリプト、②タスクの順番で作成し、コピー&ペーストでパスを誤りなく設定するようにしてください。
ファイルバックアップのためのスクリプト
では、ファイルバックアップをするスクリプトを作っていきましょう。
スクリプトの全体像
別ディレクトリにファイルをコピーし、いつバックアップされたファイルかわかるようにファイル名にスクリプト起動時の日付を付与するスクリプトを作成します。
タスクスケジューラで指定したとおり、デスクトップに「sample.ps1」という名称で保存します。
スクリプトは以下の通りです。
$indir = "C:\Users\terad\Desktop\input" $outdir = "C:\Users\terad\Desktop\output" $date = Get-Date -UFormat "%Y%m%d" Get-ChildItem $indir | Foreach-Object { $infile = $indir + "\" + $_.name $outfile = $outdir + "\" + $date + "_" + $_.name Copy-Item $infile -Destination $outfile }
詳細を説明してきますね。
ディレクトリのパスと起動日付を変数に格納する
まずバックアップ元、バックアップ先のディレクトリをそれぞれ変数$indir、$outdirに代入します。
次に現在の日付と時刻を取得できるコマンドレット:Get-Dateを使って起動時の日付を取得し変数$dateに代入します。
$indir = "C:\Users\terad\Desktop\input" $outdir = "C:\Users\terad\Desktop\output" $date = Get-Date -UFormat "%Y%m%d"
Get-Dateの構文は以下の通りです。
取得する日付の書式をUformatパラメータで指定できます。今回は「西暦4桁+月+日」とするので「%Y%m%d」とします。
Uformatの日付の形式は以下のように指定できます。
書式 | 取得する情報 |
---|---|
%Y | 年(西暦4桁) |
%y | 年(西暦下2桁) |
%m | 月(01~12) |
%B | 月(January~December) |
%d | 日(01~31) |
%H | 時(00~23) |
%h | 時(01~12) |
%M | 分(00~59) |
%S | 秒(00~59) |
%p | 午前/午後 |
ファイルをコピーし名称を変更する
Get-ChildItemで取得した複数ファイルをForEach-ObjectとCopy-Itemで全てコピーします。
詳細は以下の記事をご覧ください。
Get-ChildItem $indir | Foreach-Object { $infile = $indir + "\" + $_.name $outfile = $outdir + "\" + $date + "_" + $_.name Copy-Item $infile -Destination $outfile }
Copy-Itemの構文は以下の通りです。
新しいファイル名は「$outdir + “\” + $date + “” + $.name」と元のファイル名($_.name)の前に日付($date)を付与しています。
実行結果
スクリプトを保存したら、PCをシャットダウンします。ノートPCの方は前回設定した条件のとおりAC電源につないだ状態で指定した時刻を待ってください。
指定した時刻が過ぎてから再度PCを起動、結果を確認してみます。
inputディレクトリには以下のようなファイルが入っています。
outputディレクトリを確認してみると…
無事、コピーされた上でファイル名が変更されていました!
まとめ
いかがだったでしょうか。
今回は定例作業としてよく使うファイルバックアップのためのスクリプトをご紹介しました。
毎日、毎週、毎月など自分の好きな間隔で定期的にタスクを実行することができますので、ファイルバックアップ以外にもいろいろなスクリプトを設定して普段の業務にお役立てください!
最後までお読みいただきありがとうございました!
連載目次:Windowsのポチポチ業務を爆速化するPowerShell
Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。- Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
- Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
- Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
- Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
- Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
- Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
- Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
- Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
- Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法
- Windowsのポチポチ業務を爆速化するPowerShell、ForEach-Objectで配列の全要素を処理する方法
- Windowsのポチポチ業務を爆速化するPowerShell、パイプラインを使いコマンドレット間で値を引き渡す方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイル名を変更する方法
- Windowsのポチポチ業務を爆速化するPowerShell、正規表現で複雑なファイル名変更をする方法
- Windowsのポチポチ業務を爆速化するPowerShell、タスクスケジューラでスクリプトを決まった日時に起動する方法
- Windowsのポチポチ業務を爆速化するPowerShell、ファイルをバックアップするスクリプトの作り方
- Windowsのポチポチ業務を爆速化するPowerShell、関数を作ってスクリプトから呼び出す方法
- Windowsのポチポチ業務を爆速化するPowerShell、関数をコンソールで登録して呼び出す方法
- Windowsのポチポチ業務を爆速化するPowerShell、短いワードでサッと関数を呼び出すエイリアスの使い方
- Windowsのポチポチ業務を爆速化するPowerShell、関数やエイリアス保存場所のドライブを紹介します
- Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法
- Windowsのポチポチ業務を爆速化するPowerShell、日付を操るDatetime型