おれさまラボ

実際に手を動かして理解を深めるブログ。

Powershell: Powershellから別のプロセスを起動する

構文

Start-Process -FilePath 'C:\Program Files (x86)\Hidemaru\Hidemaru.exe' -ArgumentList $fullPath -Wait

Powershellスクリプトから別のプロセス(今回だと秀丸エディタ)を起動する場合、Start-Processを利用します。

  • -FilePathを使って実行ファイルの場所を指定します。
  • -ArgumentListを使って、プロセス起動時の引数を管理します。
  • -Waitを使うことで、新しいプロセスが終了するまでPowershellスクリプトも起動したままになります。

参考

Start-Process

Powershell: ファイル内の文字列を置き換える

構文

$data = Get-Content ./test_bef.txt -Encoding UTF8
$data = $data | ForEach-Object { $_ -replace "置き換え前の文字列","置き換え後の文字列" }
$data | Out-File ./test_aft.txt -Encoding utf8
  1. Get-Content でファイルの内容を読み込みます。
  2. 読み込んだ文字列それぞれに対して、置き換えを行います。
  3. 変数に格納された置き換え後の情報を新しいファイルに出力します。

ファイルを開いたり、新しいファイルに書き出したりする時には -Encoding をつけて文字コードを揃えないと文字化けしますので注意です。

Powershell: スクリプト自身が存在するディレクトリを取得する

構文

$PSScriptRoot

$PSScriptRootは、スクリプトの親ディレクトリを格納している特殊変数です。

サンプルスクリプト

$scriptDir = $PSScriptRoot
Write-Host $scriptDir

出力結果

PS C:\Users\Naoto\Documents\00.lab> pwd

Path
----
C:\Users\Naoto\Documents\00.lab


PS C:\Users\Naoto\Documents\00.lab> .\test.ps1
C:\Users\Naoto\Documents\00.lab

参考

about_Automatic_Variables