Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
前回の記事はこちらです。
前回はif文など構文を使わずにディレクトリ(フォルダ)を作成するスクリプトの作り方をお伝えしました。
今回から数回にわたって複数のファイル名称を変更し、別ディレクトリにコピーするスクリプトを作成していきますよ!
ディレクトリがあるかないかの判断をコンピュータにやってもらうため制御構文(条件判定)を使います。
それではいってみましょう!
ディレクトリを作成する
コピー先のディレクトリをデスクトップに作ります。前回ご紹介したコマンドレット:New-Itemを使います。
New-Itemの構文は以下の通りです。
Set-Locationでカレントディレクトリをデスクトップに変更した後、New-Itemでsampleという名称のディレクトリを作成します。
ISEのスクリプトウィンドウに以下を入力し実行してください。
Set-Location C:\Users\terad\Desktop New-Item sample -ItemType Directory
Set-Locationで指定するデスクトップのパスは、ご自身の環境のものに置き換えてくださいね。実行すると…
このようにディレクトリが作成できました。
一度作成したスクリプトは繰り返し使いたいですよね。しかしこのスクリプトをもう1度実行すると…
New-Item : 指定された名前 C:\Users\terad\Desktop\sample の項目は既に存在します。
発生場所 C:\Users\terad\Desktop\rename.ps1:2 文字:1
+ New-Item sample -ItemType Directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (C:\Users\terad\Desktop\sample:String) [New-Item], IOException
+ FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
このよう既に存在していますとエラーになってしまいます。
スクリプト実行前にディレクトリを確認し手作業で削除するのも1つの手ですが、本連載の目的はマウスの業務=ポチポチ業務をなくすことです。
その作業、コンピュータにやらせましょう!
ディレクトリの有無を判定するには「if文」を使います。
if文の書き方
ifは直訳すると「もし~ならば」ですね。if文は条件を判定し処理を分岐させるときに使用します。
if文の書き方は以下の通りです。
処理内容
}
()内の条件式が成立する=Trueのときだけ、{}内の処理内容を実行します。
ディレクトリの有無はTest-Pathコマンドレットを使用して調べることができます。
Test-Pathでディレクトリの有無を確かめる
Test-Pathの構文は以下の通りです。
Test-Pathは指定したディレクトリが存在するときはTure、存在しないときはFalseという値を返します。
さきほどのif文の説明を思い出してください。
if文は条件式が成立する=Trueの時に処理を実行します。Test-Pathは「存在しないとき=False」であるため「存在しないときにディレクトリを作成する」という処理が実現できません。
そこで-notという構文を使います。
-notでTrueをFalseに変換する
-notを使うとTest-Pathなどが返すTrue/Falseの値を逆転できます。
-notは「-」がついていますが、パラメータとは違い論理演算子の一つです。
True・Falseのことを真偽値といい、その操作するのが論理演算子です。
他の論理演算子の説明は割愛いたしますが、パラメータとは違うものであると認識しておいてください。
このように記載すると
- フォルダが存在しない場合にTest-PathはFalseを返す
- -notを付けることでFalseがTrueに変換される
という流れで「フォルダ存在しないとき」がTrueになります。
if文でディレクトリが存在しないとき作成する
仕組みを理解したところで、スクリプトを書いていきましょう。
Set-Location C:\Users\terad\Desktop if (-not (Test-Path C:\Users\terad\Desktop\sample)){ New-Item sample -ItemType Directory }
実行すると…
このようにエラーが起こらず終了しました。
何もしていないように見えますが、if文でディレクトリの有無を判定し、何もせずにスクリプトが終了しています。
試しにディレクトリが存在しない時に作成するか、デスクトップのsampleというディレクトリを一度削除してもう1度実行してみてください。
はい、sampleというディレクトリが作成されました。IF文を使うことでディレクトリの有無に応じて処理を分岐させることができました!
まとめ
いかがだったでしょうか。
if文を使うことでディレクトリの有無など状況に応じて処理を分岐させることができます。またif文は条件式がTrueのときに実行する仕組みなので、条件式がFalseのときに処理をしたいときは-notで反転させる必要があります。
if文を使うことでコンピュータに判断をさせられますので、お任せできる仕事の範囲もぐっと広がりましたね。
次回は繰り返し処理を使って複数のファイル名を変更していきますよ!
最後までお読みいただきありがとうございました!
連載目次: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型