【PowerShell】空のフォルダを再帰的に作成する方法


この記事はプロモーションを含みます。

PowerShell

ホーム > PowerShell 逆引きリファレンス

PowerShellで空フォルダを再帰的に作成する方法を解説します。

空フォルダを再帰的に作成する

フォルダを再帰的(サブディレクトリも含めて)作成する方法です。

書式

New-Item -Path <作成するフォルダパス> -ItemType Directory

作成するフォルダが既に存在する場合は、下記のようなエラーが発生します。
この場合は、後述の強制的に空フォルダを作成するを参考にして下さい。
また、このエラーですが、作成可能なフォルダが1つも無い場合に発生するようです。
例えば、[A\B\C]と再帰的に作成する場合、[A\B]が存在してても[C]が作成されるため、エラーとなりません。

New-Item : 指定された名前 C:\ws\Dir1\Dir2 の項目は既に存在します。
発生場所 C:\workspace\PowerShell\powershell-new-item-directory.ps1:5 文字:1
+ New-Item -Path C:\ws\Dir1\Dir2 -ItemType Directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceExists: (C:\ws\Dir1\Dir2:String) [New-Item], IOException
    + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand

サンプル

「C:\ws」配下に「Dir1\Dir2\Dir3」と作成するサンプルです。

New-Item -Path C:\ws\Dir1\Dir2\Dir3 -ItemType Directory

実行結果

サンプルの実行結果です。

作成前は「C\:ws」のみなので、「Dir1\Dir2」も作成されているのですが、実行結果としては、最も深いフォルダの「Dir3」しか表示されないようです。
この情報だけでは、実際に作成されたフォルダが見えないので、エビデンスなどを残す必要がある場合は注意が必要ですね。

    ディレクトリ: C:\ws\Dir1\Dir2

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/06/16      2:16                Dir3

強制的に空フォルダを作成する

前項の方法では、作成するフォルダが既に存在する場合は、エラーとなる話をしました。
ここでは、エラーが発生しないよう「Force」オプションを付けた方法を説明します。

書式

New-Item -Path <作成するフォルダパス> -ItemType Directory -Force

サンプル

「C:\ws」配下に「Dir1\Dir2\Dir3」と作成するサンプルです。

New-Item -Path C:\ws\Dir1\Dir2\Dir3 -ItemType Directory -Force

実行結果

既に「Dir1\Dir2\Dir3」が作成された状態で実行してみました。
エラーは発生しませんでしたが、既に作成対象のフォルダが存在する場合は再作成されないようです。
再作成されないので、最終更新日も変更されていません。

試しに作成対象のフォルダ内にファイルを置いて実行してみましたが、ファイルが削除されるなどもありませんでした。

    ディレクトリ: C:\ws\Dir1\Dir2

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/06/16      2:20                Dir3

コメント

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