Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法


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

前回の記事はこちらです。

Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
Windowsのポチポチ業務(マウスを使った業務)を爆速化できるPowerShell。プログラミングのハードルが高いという方向けにフォルダを作るスクリプト作成方法をお伝えします。

前回はif文など構文を使わずにディレクトリ(フォルダ)を作成するスクリプトの作り方をお伝えしました。

今回から数回にわたって複数のファイル名称を変更し、別ディレクトリにコピーするスクリプトを作成していきますよ!

ディレクトリがあるかないかの判断をコンピュータにやってもらうため制御構文(条件判定)を使います

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

ディレクトリを作成する

コピー先のディレクトリをデスクトップに作ります。前回ご紹介したコマンドレット:New-Itemを使います。

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

New-Item ディレクトリ名 -ItemType Directory

Set-Locationでカレントディレクトリをデスクトップに変更した後、New-Itemでsampleという名称のディレクトリを作成します。

ISEのスクリプトウィンドウに以下を入力し実行してください。

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

if(条件式){

処理内容

()内の条件式が成立する=Trueのときだけ、{}内の処理内容を実行します。

ディレクトリの有無はTest-Pathコマンドレットを使用して調べることができます。

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のことを真偽値といい、その操作するのが論理演算子です。

他の論理演算子の説明は割愛いたしますが、パラメータとは違うものであると認識しておいてください。

-not(Test-Path フォルダのパス)

このように記載すると

  1. フォルダが存在しない場合にTest-PathはFalseを返す
  2. -notを付けることでFalseがTrueに変換される

という流れで「フォルダ存在しないとき」がTrueになります。

if文でディレクトリが存在しないとき作成する

仕組みを理解したところで、スクリプトを書いていきましょう。

実行すると…

このようにエラーが起こらず終了しました。

何もしていないように見えますが、if文でディレクトリの有無を判定し、何もせずにスクリプトが終了しています。

試しにディレクトリが存在しない時に作成するか、デスクトップのsampleというディレクトリを一度削除してもう1度実行してみてください。

はい、sampleというディレクトリが作成されました。IF文を使うことでディレクトリの有無に応じて処理を分岐させることができました!

まとめ

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

if文を使うことでディレクトリの有無など状況に応じて処理を分岐させることができます。またif文は条件式がTrueのときに実行する仕組みなので、条件式がFalseのときに処理をしたいときは-notで反転させる必要があります

if文を使うことでコンピュータに判断をさせられますので、お任せできる仕事の範囲もぐっと広がりましたね。

次回は繰り返し処理を使って複数のファイル名を変更していきますよ!

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

連載目次:Windowsのポチポチ業務を爆速化するPowerShell

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
  1. Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
  2. Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
  3. Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
  4. Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
  5. Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
  6. Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
  7. Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
  8. Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方
  9. Windowsのポチポチ業務を爆速化するPowerShell、if文を使いフォルダの有無で処理を分岐させる方法
  10. Windowsのポチポチ業務を爆速化するPowerShell、ForEach-Objectで配列の全要素を処理する方法
  11. Windowsのポチポチ業務を爆速化するPowerShell、パイプラインを使いコマンドレット間で値を引き渡す方法
  12. Windowsのポチポチ業務を爆速化するPowerShell、ファイルを別フォルダにコピーし名称を変更する方法
  13. Windowsのポチポチ業務を爆速化するPowerShell、ファイル名を変更する方法
  14. Windowsのポチポチ業務を爆速化するPowerShell、正規表現で複雑なファイル名変更をする方法
  15. Windowsのポチポチ業務を爆速化するPowerShell、タスクスケジューラでスクリプトを決まった日時に起動する方法
  16. Windowsのポチポチ業務を爆速化するPowerShell、ファイルをバックアップするスクリプトの作り方
  17. Windowsのポチポチ業務を爆速化するPowerShell、関数を作ってスクリプトから呼び出す方法
  18. Windowsのポチポチ業務を爆速化するPowerShell、関数をコンソールで登録して呼び出す方法
  19. Windowsのポチポチ業務を爆速化するPowerShell、短いワードでサッと関数を呼び出すエイリアスの使い方
  20. Windowsのポチポチ業務を爆速化するPowerShell、関数やエイリアス保存場所のドライブを紹介します
  21. Windowsのポチポチ業務を爆速化するPowerShell、elseifで日付の元号を判定する方法
  22. Windowsのポチポチ業務を爆速化するPowerShell、日付を操るDatetime型

  投稿者プロフィール

teradoshプログラミングする福祉職
システムエンジニアとして5年勤務した後、高齢者デイサービスで4年間働いた異色の経歴(学生時代は水泳コーチ)。1986年生まれ。大阪府豊中市在住。2女の父。

プログラミングの経験を活かし、福祉現場の業務効率化に情熱を燃やしています!

お気軽にフォローしてくださいね。

コメント

タイトルとURLをコピーしました