Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2077

Windowsのポチポチ業務を爆速化するPowerShell、ファイルをバックアップするスクリプトの作り方

$
0
0

みなさんこんにちは、テラド(@terashin1226)です!

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。

前回はタスクスケジューラというWindowsの標準機能を使ってPowerShellのスクリプトを決まった日時に起動する設定方法をお伝えしました。

Windowsのポチポチ業務を爆速化するPowerShell、タスクスケジューラでスクリプトを決まった日時に起動する方法
Windowsのポチポチ業務(=マウスを使った業務)を爆速化するPowerShell。今回はタスクスケジューラというWindowsの標準機能を使って定期的にスクリプトを起動する方法をお伝えします!

今回はタスクスケジューラとの組み合わせ抜群なファイルをバックアップするスクリプトの作り方をお伝えします。

大事なファイルは定期的にバックアップしておきたい…それが自動で実行されると作業漏れがなくなり、時間も節約できて一石二鳥ですよ!

それではいってみましょう!

前回のおさらい

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の構文は以下の通りです。

Get-Date -Uformat “日付の書式”

取得する日付の書式を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で全てコピーします。

詳細は以下の記事をご覧ください。

Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
複数ファイルを一気にリネームする方法をご紹介!今回は複数のファイルをCopy-Itemというコマンドレットを使い、ファイル名を変更し別フォルダにコピーする方法をお伝えします!

Get-ChildItem $indir | Foreach-Object {
    $infile = $indir + "\" + $_.name
    $outfile = $outdir + "\" + $date + "_" + $_.name
    Copy-Item $infile -Destination $outfile
}

Copy-Itemの構文は以下の通りです。

Copy-Item コピー元ファイルのフルパス -Destination コピー先ファイルのフルパス

新しいファイル名は「$outdir + “\” + $date + “” + $.name」と元のファイル名($_.name)の前に日付($date)を付与しています。

実行結果

スクリプトを保存したら、PCをシャットダウンします。ノートPCの方は前回設定した条件のとおりAC電源につないだ状態で指定した時刻を待ってください。

指定した時刻が過ぎてから再度PCを起動、結果を確認してみます。

inputディレクトリには以下のようなファイルが入っています。

outputディレクトリを確認してみると…

無事、コピーされた上でファイル名が変更されていました!

まとめ

いかがだったでしょうか。

今回は定例作業としてよく使うファイルバックアップのためのスクリプトをご紹介しました。

毎日、毎週、毎月など自分の好きな間隔で定期的にタスクを実行することができますので、ファイルバックアップ以外にもいろいろなスクリプトを設定して普段の業務にお役立てください!

最後までお読みいただきありがとうございました!


Viewing all articles
Browse latest Browse all 2077

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>