こんにちは!れーあです。
今回はほっっっとんど触ったことのない
PowerShellの勉強をしたくなったのでこの記事を投稿します。
ここでは大量のファイルを作成するスクリプトを作っていきます。
※ほぼ素人の書く記事のため粗さはご了承ください。
前提情報
スクリプト実行環境
PS C:\Users\user> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 4046
スクリプト内容
というわけで、まずは実際のスクリプトの内容を記載します。
処理内容:指定フォルダ配下にフォルダを大量(20個)作成する。
作成するファイル中身にはそれぞれxの値を記載する。
# フォルダパス指定:なければ作成
$folderPath = Read-Host "Please enter Folder Name"
if (-not (Test-Path -Path $folderPath)) {
New-Item -Path $folderPath -ItemType Directory
Write-Host "$folderPath create Successed."
}
# xの初期値を設定
$x = 1
# xの値が20以上になるまで処理繰り返し
while ($x -le 20) {
#ファイルパス生成
$filePath = Join-Path -Path $folderPath -ChildPath "test_$x.txt"
#xの値をファイルに書き込み
New-Item -Path $folderPath -Name "test_$x.txt" -ItemType file -Value "$x"
$x += 1
}
Write-Host "Scripts Finished"
使用コマンドレット説明
コマンドレット名 | 説明 | 備考 |
---|---|---|
Read-Host "タイトル" | コンソールに入力文字列を読み取る | |
if (-not 条件) {処理} | 条件に一致しない場合処理を実施する | |
Test-Path -Path | パスの要素があっているか確認する | |
New-Item -Path "フォルダパス" -ItemType Directory | フォルダ作成 | -ItemType Fileでファイル作成 |
while (条件) {処理} | 条件に一致するまで処理を繰り返す | |
Join-Path -Path "親パス" -ChildPath "子パス" | 親パスと子パスを結合して使用する | 実際にそのパスが存在するかは考慮外 |
Write-Host "出力内容" | 出力内容記載値をコンソールに表示 |
実際に動かしてみた
実際に動かしてみました。
ファイル作成先は「C:\Users\user\Desktop\tests」とします。
まず、実行前ではこのフォルダは存在しません。
実行すると作成フォルダを聞かれます。今回指定フォルダの「C:\Users\user\Desktop\tests」を入力してEnterキーを押下します。
一瞬ファイルが作成された画面表示後、PowerShell画面が終了します。
デスクトップに「tests」フォルダができています。
「tests」フォルダを開くと指定した20ファイルが作成されており、そのファイルの内容はスクリプトの「$x」の値が記載されています。
無事にスクリプトは動作したようです。
おわりに
というわけで今回はPowerShellでスクリプトを書いてみました。
取っかかりやすいものはあるかなと考えた結果、
ファイルを大量に作ってみようと思い立ったものの、
空ファイルを量産するのではなく中身付きがいいなと思ったので
今回のようなスクリプトになりました。
今回のものを改良すれば、例えばエラーメッセージが発生した際にエラーメッセージ内容別でファイルを作成したり、サーバ別に出力メッセージをテキスト化したりすることに使用できるかなと考えています。
では、今回はこのあたりで。
参考
今回参考はMicrosoft公式のコマンドリファレンスを参照しました。
・If文 - learn.microsoft.com
・while文 - learn.microsoft.com
・Test-Path - learn.microsoft.com
・New-Item - learn.microsoft.com
・Join-Path - learn.microsoft.com
・Read-Host - learn.microsoft.com
・Write-Host - learn.microsoft.com