Windowsでの作業を自動化したい、バッチ処理を効率化したい、そんなときに強力な味方となるのがPowerShellです。
特にファイルやフォルダの作成は、日常業務の中で頻繁に必要となる基本操作です。
「GUIで操作するより速く済ませたい」
「同じ構造のフォルダを何度も作るのが面倒」
「日付ごとのログファイルを自動生成したい」
このような要望に応えるため、本記事ではPowerShellを使ったファイル・フォルダ作成の基本から応用までを、コピペですぐに使えるサンプルコードとともに解説します。
コマンドラインに不慣れな方でも理解できるよう、ステップバイステップで説明していきます。
ファイルとフォルダを作る基本コマンド

PowerShellでは、ファイルもフォルダ(ディレクトリ)も同じコマンドレットで作成します。
それがNew-Item
です。
基本構文
New-Item -Path "パス" -ItemType File|Directory [-Force]
主なパラメータ:
-Path
: 作成するファイル/フォルダのパス-ItemType
: “File”(ファイル)か”Directory”(フォルダ)を指定-Force
: 既存のファイル/フォルダを上書きする場合に使用(オプション)
ファイルを作成する方法(New-Item)

空のファイルを作成する
New-Item -Path "C:\temp\sample.txt" -ItemType File
このコマンドを実行すると、C:\temp
フォルダ内にsample.txt
という空のテキストファイルが作成されます。
内容を指定してファイルを作成する
New-Item -Path "C:\temp\memo.txt" -ItemType File -Value "これはメモファイルです。"
-Value
パラメータを使用すると、ファイル作成と同時に内容を書き込めます。
既存ファイルを上書きする
New-Item -Path "C:\temp\config.ini" -ItemType File -Force
-Force
パラメータを付けると、同名のファイルが存在する場合に上書きします。
付けないと、すでにファイルが存在する場合はエラーになります。
フォルダ(ディレクトリ)を作成する方法

単一のフォルダを作成する
New-Item -Path "C:\Projects\NewProject" -ItemType Directory
このコマンドでC:\Projects
フォルダ内にNewProject
というフォルダが作成されます。
階層化されたフォルダを一度に作成する
New-Item -Path "C:\Data\Reports\2024\Q1" -ItemType Directory
途中のフォルダ(Data
、Reports
、2024
)が存在しない場合はエラーになります。
親フォルダも含めて作成する(重要!)
New-Item -Path "C:\Data\Reports\2024\Q1" -ItemType Directory -Force
-Force
を付けても親フォルダが自動生成されるわけではありません。階層構造全体を作成するには:
# より確実な方法
New-Item -Path "C:\Data" -ItemType Directory -Force
New-Item -Path "C:\Data\Reports" -ItemType Directory -Force
New-Item -Path "C:\Data\Reports\2024" -ItemType Directory -Force
New-Item -Path "C:\Data\Reports\2024\Q1" -ItemType Directory -Force
存在チェック&なければ作成する方法

実務では、ファイルやフォルダが既に存在するかをチェックしてから作成するのが安全なプラクティスです。
フォルダの存在チェック&作成
$path = "C:\Temp\Logs"
if (-Not (Test-Path -Path $path)) {
New-Item -Path $path -ItemType Directory
Write-Host "フォルダを作成しました: $path"
} else {
Write-Host "フォルダは既に存在します: $path"
}
ファイルの存在チェック&作成
$file = "C:\Temp\settings.json"
if (-Not (Test-Path -Path $file)) {
New-Item -Path $file -ItemType File -Value "{`"version`": `"1.0`"}"
Write-Host "ファイルを作成しました: $file"
} else {
Write-Host "ファイルは既に存在します: $file"
}
複数フォルダやファイルを一括作成する方法
PowerShellの真価は、繰り返し処理や一括処理を簡単に実装できる点にあります。
複数フォルダを一括作成
# 月別フォルダを一度に作成
$months = "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
foreach ($month in $months) {
New-Item -Path "C:\Reports\2024\$month" -ItemType Directory
}
パイプラインを使った複数ファイルの作成
# 1から5までの連番ファイルを作成
1..5 | ForEach-Object {
New-Item -Path "C:\Temp\file$_.txt" -ItemType File
}
フォルダ構造を再帰的に作成
# プロジェクト用フォルダ構造を一気に作成
$projectName = "NewWebApp"
$folderStructure = @(
"C:\Projects\$projectName",
"C:\Projects\$projectName\src",
"C:\Projects\$projectName\docs",
"C:\Projects\$projectName\tests",
"C:\Projects\$projectName\build"
)
foreach ($folder in $folderStructure) {
if (-Not (Test-Path -Path $folder)) {
New-Item -Path $folder -ItemType Directory
Write-Host "作成: $folder"
}
}
実用例:日付付きフォルダ、ログファイル生成など
PowerShellを使った実践的なファイル・フォルダ作成パターンを紹介します。
今日の日付でフォルダを作成
# 「yyyyMMdd」形式(例:20240501)の日付フォルダを作成
$today = Get-Date -Format "yyyyMMdd"
New-Item -Path "C:\Backup\$today" -ItemType Directory
年月日の階層構造でフォルダを作成
$date = Get-Date
$year = $date.ToString("yyyy")
$month = $date.ToString("MM")
$day = $date.ToString("dd")
# 階層的なフォルダ構造を作成
$path = "C:\Archives\$year\$month\$day"
New-Item -Path $path -ItemType Directory -Force
タイムスタンプ付きログファイルの生成
# 「yyyyMMdd_HHmmss」形式のタイムスタンプ付きログファイルを作成
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$logFile = "C:\Logs\log_$timestamp.txt"
New-Item -Path $logFile -ItemType File -Value "ログ記録開始:$(Get-Date)"
週次バックアップフォルダの自動作成
# 週番号を取得(1~53の値)
$weekNumber = (Get-Date).DayOfYear / 7 -as [int] + 1
$weekFolder = "C:\Backup\Week$weekNumber"
if (-Not (Test-Path -Path $weekFolder)) {
New-Item -Path $weekFolder -ItemType Directory
Write-Host "今週のバックアップフォルダを作成しました: $weekFolder"
}
よくあるエラーと対処法

「アクセスが拒否されました」エラー
New-Item : アクセスが拒否されました
解決策:
- PowerShellを管理者権限で実行する
- フォルダのアクセス権を確認する
「パスが見つかりません」エラー
New-Item : パスの一部が見つかりません
解決策:
- 親フォルダが存在するか確認する
- 親フォルダを先に作成する
「ファイルがすでに存在します」エラー
New-Item : ファイル 'C:\temp\file.txt' はすでに存在します
解決策:
-Force
パラメータを使用する- 事前に
Test-Path
で存在チェックをする
まとめ
操作内容 | コマンド例 |
---|---|
ファイル作成 | New-Item -Path "file.txt" -ItemType File |
内容付きファイル作成 | New-Item -Path "file.txt" -ItemType File -Value "内容" |
フォルダ作成 | New-Item -Path "folder" -ItemType Directory |
存在チェック&作成 | if (-Not (Test-Path ...)) { New-Item ... } |
日付フォルダ作成 | New-Item -Path "$(Get-Date -Format 'yyyyMMdd')" -ItemType Directory |
複数ファイル作成 | `1..5 |
PowerShellを使ったファイル・フォルダ操作は、業務効率化の第一歩です。単純な作業を自動化することで、人為的ミスを減らし、作業時間を大幅に短縮できます。
この記事で紹介したコマンドやテクニックを活用し、ぜひ自分の業務に合わせたスクリプトを作成してみてください。小さな自動化の積み重ねが、大きな効率化につながります。
コメント