PowerShellファイル操作
PowerShellファイル操作
ファイルの作成と削除
新規のファイル/フォルダを作成にはNew-Itemコマンドレットを用います。
itemTypeでファイルの種類を指定します。
PS> New-Item c:\tmp\itemized.csv -itemType File
PS> New-Item .\temp -itemType Directory
ファイル/フォルダの削除にはRemove-Itemコマンドレットを用います。
PS> Remove-Item c:\tmp\itemized.csv
PS> Remove-Item .\temp -Recurse -Force
ファイルのコピーと移動
ファイル/フォルダのコピーと移動は、Copy-Item/Move-Itemコマンドレットを用います。
「-Confirm」オプションを付与すると、コマンド実行是非を確認できます。
PS> Copy-Item -Confirm ".\datafile" ".\datafile.swap"
PS> Move-Item -force ".\datafile.swap" ".\datafile"
ファイルの存在を確認する
ファイルが存在するか確認するにはtest-patコマンドレットを用います。
$filepath = "datafile"
if( $(test-path $filepath) -ne $True ){
Write-Error("ERROR: Not found " + $filepath)
return($false)
}
PowerShellでのファイルの読み書き
ファイルの読み込み
ファイルの読み込みは、Get-Contentコマンドレットを用います。
Get-Contentの戻り値であるオブジェクトには様々なメソッドが用意されています。
$filepath = "datafile"
$contents = Get-Content $filepath
$contents | get-member
戻り値オブジェクトは配列として扱えますので、foreachで一行ずつアクセスできます。
$lines = get-content $filename
foreach($line in $lines){
write-host("> $line")
}
また、ファイル内容を一行ずつ処理する場合にはForeach-Objectを利用できます。
Get-Content $filepath | Foreach-Object {
echo $_
}
注意点は以下の通りです。
- 日本語PowerShellの場合、Get-ContentはUTF16またはSJISのテキストファイルを読み取れる。
- UTF16やSJIS以外のファイルを読み込むには「-Encoding」オプションで文字コードを指定する。
- 指定出来る文字コードはUTF8やAscii等でEUC-JPやJISは指定出来ない。
- -Encoding Defaultと指定するとSJISを指定する事になる。
ファイルへの書き込み
ファイルのへの書き込みは、Set-Contentコマンドレットを用います。
下記スクリプトは、ファイル($filepath)内の文字列$srcを文字列$destに置換し、.swapファイルに書き出した後に元ファイルにマージしています。
function replace_file_contents($filepath, $src, $dest)
{
$ErrorActionPreference = "Stop"
try{
# ファイル内の文字列を置換する
$buf = $(Get-Content $filepath) -replace $src, $dest
# 一時ファイルに出力する
Set-Content -Path "$filepath.swap" -Value $buf
# 元ファイルに上書きする
Move-Item -force "$filepath.swap" $filepath
}catch{
Write-Host($error)
}
return($true)
}
if($args.length -ne 3){
Write-Error("ERROR: Invalid arguments.")
exit $false
}
$rc = replace_file_contents $args[0] $args[1] $args[2]
exit $rc
ファイルへ追記
ファイルのへの追加書き込みは、Add-Contentコマンドレットを用います。
function append_parameter($filepath, $param)
{
$ErrorActionPreference = "Stop"
try{
# 文字列をファイル末尾に追記する
Add-Content $filepath $param
}catch{
Write-Host($error)
return(1)
}
return(0)
}
関連ページ
- Windows
- PowerShellスクリプトの作成と実行
- PowerShell変数
- PowerShell配列
- PowerShell連想配列(ハッシュ)
- PowerShell演算子
- PowerShell制御構文
- PowerShell関数
- PowerShell例外処理
- PowerShellファイル操作
- PowerShell設定ファイルの読み込み