PowerShellでファイルとフォルダーを作成する方法

Windows PCでファイルやフォルダを作成する必要がある場合、GUIを使用することは最も直感的な方法に見えるかもしれません。しかし、PowerShellを使用すると、複数のファイルやフォルダを効率的に一括作成できます。これはほとんどのITプロフェッショナルにとって非常に一般的なタスクであり、このガイドでは、New-Item PowerShellコマンドレットを使用してファイルやフォルダを作成する方法を紹介します。

PowerShellでファイルを作成する方法

PowerShellの使用方法を理解すれば、物事を作成できるスピードが向上し、日常的なタスクがはるかに簡単になります。では、New-Item、Add-Content、Test-Pathコマンドレットを使用してファイルとフォルダを作成する方法を見てみましょう。

広告

New-itemコマンドを使用してファイルを作成する方法

PowerShellを使用して新しいファイルを作成するには、New-Itemコマンドレットを使用します。例えば、MyTextFile.txtという新しいテキストファイルを作成したい場合、構文は次のとおりです:

New-Item MyTextFile.txt
Creating a file using the New-Item cmdlet

上記の例では、PowerShellはc:ディレクトリ内にファイルを作成しました。ただし、ファイル名にパスを追加するだけで異なる場所を指定できます。以下に例を示します:

New-Item c:\tools\MyNewFile.txt
Creating a file in a different folder

上記のスクリーンキャプチャでは、一時ディレクトリにいましたが、ツールディレクトリにファイルを作成しました。新しいファイルの作成に慣れたら、一括でファイルを作成するためのコードを追加するのは1行だけです。

以下は、単純なForEachループを使用して、類似のファイル名を持つファイルを10個作成する例です。

広告

(1..10) | ForEach-Object {New-item “MyNewFile$_.txt”}
Create multiple files with a simple loop

必要に応じて、Get-ChildItemコマンドレットを使用してそのディレクトリ内のすべてのファイルをリスト表示することもできます。

既存の存在を確認した後にファイルを作成する

ファイルを作成する前に既に存在していないかをチェックするためにもPowerShellを使用することができます。PowerShellを使用してファイルが既に存在するかどうかをテストする方法はいくつかありますが、そのうち最も簡単な方法はTest-Pathコマンドレットを使用することです。

名前の通り、Test-Pathコマンドレットはパスが存在するかどうかを確認できます。ファイルパス、および/またはフォルダパスをチェックできます。コマンドレットは、ファイルまたはフォルダが存在する場合はTrueを返し、存在しない場合はFalseを返します。

以下の例では、ファイル名がMyTextFile.txtであるファイルが存在するかどうかをチェックしています。ファイルが存在するため、Test-PathコマンドレットがTrueを返しました:

広告

Test-Path MyTextFile.txt
Using test-Path to see if a file exists

ファイルが存在するかどうかをテストするロジックを学んだら、Test-PathコマンドをIf文と組み合わせて、Test-PathがFalseを返した場合にファイルを作成できます。以下の例でその方法を示します:

  • ここでは、コードを読みやすくし、繰り返し入力を避けるために、ファイル名に$FileNameという変数を使用しています。
  • 次に、ファイルの存在を確認するためのIf文を追加しました。丸括弧にはテストする条件が含まれ、中括弧には条件がTrueの場合に実行したいコードが含まれます。私の例では-not演算子が使用されていることに注目してください。
  • コードは、ファイル名がMyTextFile.txtでない場合はファイルを作成すると述べています。If文は、条件がTrueの場合のみ実行されます。
  • I have added the -not parameter to change the condition to match on False instead of True.
$Filename = "MyTextFile.txt"
if (-not(test-path $Filename)){new-item $FileName}
Checking if a file exists and creating a new file if it doesn’t exist

出力を一緒に確認して何が起こったかを正確に把握しましょう:例1でコードを実行しましたが、何も起こりませんでした。出力がないことに注意してください。これは、c:ディレクトリにMyTextFile.txtというファイル名がすでに存在するためです。存在するため、if文はコードを実行しませんでした。

例2では、一方で、一時ディレクトリからツールディレクトリにディレクトリを変更したことに気づくことができます。後者にはMyTextFile.txtという名前のファイルがないため、コードを2回実行したとき、if文がNew-Itemコマンドレットを実行し、新しいファイルを作成します。

新しいファイルまたは既存ファイルにデータを書き込む方法

PowerShellで新しいファイルを作成する方法についてはすでに見てきましたが、前の画面キャプチャを見ると、すべての新しいファイルのファイルサイズが0バイトであることに気づくでしょう。それはNew-Itemコマンドレットが実際に空ファイルを作成するためです。

既存のファイルにデータを追加したい場合は、Add-Contentコマンドレットを使用できます。構文はNew-itemコマンドと同様に理解しやすく、以下に例を示します:

Add-Content mytextfile.txt -Value "Here's some sample text written via PowerShell"

次に、Get-Contentコマンドレットを使用してファイルを確認できます。

get-content .\mytextfile.txt
Adding content to an existing file

I can also open the file in PowerShell using the Invoke-Item cmdlet.

Invoke-Item .\mytextfile.txt
Opening a file with the Invoke-Item cmdlet

既存のファイルを上書きする方法

PowerShellを使用して新しいファイルを作成できる場合、フォルダ内の既存のファイルを置き換えることもできます。 PowerShellは、同じ名前のファイルが既に存在する場合にファイルを作成しようとすると警告を表示します。

以下の例では、MyNewFile3.txtという名前のファイルを作成しようとすると、PowerShellが表示するエラーメッセージが表示されます。

New-item .\MyNewFile3.txt
PowerShell warns of an existing file with the same name

ただし、そのファイルを置き換えたい場合は、-forceパラメータを追加することで、同じ名前の既存ファイルを上書きできます。

new-item .\MyNewFile3.txt -Force
Overwriting a file using the -force parameter

PowerShellでフォルダを作成する方法

PowerShellでファイルを作成するさまざまな方法を見てきました。次に、New-itemおよびmdコマンドを使用してフォルダを作成する方法を見てみましょう。

New-itemコマンドを使用してフォルダを作成する

PowerShellでフォルダを作成することも、以前にファイルを作成するために使用したNew-Itemコマンドレットと同じくらい簡単です。必要なのは、-ItemTypeパラメータを指定するだけです。

-ItemTypeパラメータは、New-Itemコマンドレットがファイル、ディレクトリ(フォルダ)、シンボリックリンク、ジャンクションポイント、またはハードリンクを作成するかを制御します。これらのオプションについて詳細は、New-ItemのMicrosoft Docsページで確認できます。

PowerShellで新しいフォルダを作成する方法は、新しいファイルを作成するのと似ています。以下のコマンドを使用した例をご覧ください:

new-item TestFolder1 -ItemType Directory
Creating a folder using the New-Item cmdlet

mdコマンドでフォルダーを作成します

PowerShellは今やクロスプラットフォーム言語であり、Windows、macOS、またはLinuxで実行できます。コマンドラインからファイルやフォルダーを作成するプロセスは、WindowsLinux、およびmacOSで類似しています。

ただし、各OSには同じタスクを実行するための異なる名前のコマンドがあります。たとえば、新しいフォルダーをNewDirectoryという名前で作成するには、各OSで類似した構文がありますが、異なるコマンド名があります。DOSでは、構文は「MD NewDirectory」ですが、Linuxでは「MKDIR NewDirectory」となります。

Microsoftは、他の言語から人気のあるコマンド名をたくさん取り入れ、PowerShellに組み込んでいます。例えば、MKDIRやMDなどのコマンドは実際にはPowerShellに存在しません。代わりに、同じことを行うPowerShell兄弟へのエイリアスです。

PowerShellでは、MDはMKDIRのエイリアスです。また、MKDIRはNew-Itemコマンドレットへのエイリアスです。つまり、PowerShellでMD、MKDIR、またはNew-Itemを入力すると、これらのコマンドすべてが同じ効果を持つことを意味します:New-Itemコマンドレットが実行されます。

その機能を強調するための簡単な例を以下に示します。

md Demofile1.txt
mkdir demofile2.txt
new-item demofile 3.txt
Creating new files with PowerShell aliases

上記の例では、New-Itemのさまざまなエイリアスやコマンドレット名を使用して3つのファイルを作成しました。エイリアスはすべてNew-Itemを入力するのと全く同じように機能します。

結論

PowerShellにはファイルやフォルダを作成する多くの方法があります。New-Itemコマンドレットを使用することで、ファイルやフォルダの作成が非常に簡単になります。

Microsoftは、PowerShellに人気のあるオペレーティングシステム(DOSやLinuxなど)からのコマンドに言及するエイリアスを含め、管理者が自宅にいるように感じるのを助けています。ループやIfなどの論理文を使用して、スケールでファイルやフォルダを作成し、存在しないファイルのみを作成するようにします。

また、既存のファイルが存在する場合には、それらが置き換えられることなくコードによって上書きされないようにします。これらのオプションを使用することで、ファイルやフォルダの管理作業を自動化するスクリプトを構築できます。

PowerShellは非常に汎用性の高いツールであり、これらの方法を学んだので、PowerShellを使用してファイルやフォルダを削除する方法についての以前のガイドもチェックできます。PowerShellを使用してファイルやフォルダを削除する

Source:
https://petri.com/powershell-how-to-create-files-folders/