Utilメソッド
【改訂新版】 Windows PowerShell ポケットリファレンス
- 作者: 牟田口大介
- 出版社/メーカー: 技術評論社
- 発売日: 2013/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
################################################################################ # Utility.ps1 ################################################################################ ################################################################################ # 機能:ファイルのエンコーディングを変換します # 引数:$inputPath - 入力ファイルパス # :$inputEncoding - 入力ファイルエンコーディング # :$outputPath - 出力ファイルパス # :$outputEncoding - 出力ファイルエンコーディング # 返値:なし # 備考:(例1)ConvertTextEncoding "C:\utf8_memo.txt" "UTF8" "C:\utf8_memo-cnv_sjis.txt" "String" # :(例2)ConvertTextEncoding "C:\sjis_memo.txt" "String" "C:\sjis_memo-cnv_utf8.txt" "UTF8" ################################################################################ function ConvertTextEncoding($inputFile, [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]$inputEncoding, $outputFile, [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]$outputEncoding ) { Get-Content -Encoding $inputEncoding $inputFile | Set-Content -Encoding $outputEncoding $outputFile } ################################################################################ # 機能:指定したパスのファイル一覧を返します # 引数:$path - パス # :$extension - 拡張子 # :$recurse - 再帰設定("recurse"を設定すると再帰的に取得する) # 返値:ファイル一覧 # 備考:(例1)GetFiles "C:\Users\shin.suzuki\Desktop\" ".pl" # :(例2)GetFiles "C:\Users\shin.suzuki\Desktop\" ".pl" "recurse" ################################################################################ function GetFiles($path, $extension, $recurse="") { $genericList = 'System.Collections.Generic.List`1[System.String]' $list = New-Object $genericList if($recurse -eq "recurse"){ foreach ($file in Get-ChildItem -Recurse -File -Path $path | Where-Object{ $_.Extension.ToLower() -eq $extension} | Sort-Object Name){ $list.Add(($file).fullname) } }else{ foreach ($file in Get-ChildItem -File -Path $path | Where-Object{ $_.Extension.ToLower() -eq $extension} | Sort-Object Name){ $list.Add(($file).fullname) } } return @($list) } ################################################################################ # 機能:指定したファイルの内容を配列として返します # 引数:$filePath - ファイル # :$encoding - エンコーディング # 返値:行配列 # 備考:(例1)$lines = ReadFile "C:\Users\shin.suzuki\Desktop\test.txt" # :(例2)$lines = ReadFile "C:\Users\shin.suzuki\Desktop\test2.txt" "String" ################################################################################ function ReadFile($filePath, [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]$encoding="UTF8" ) { $lines = @(Get-Content -Path $filePath -Encoding $encoding) return $lines } ################################################################################ # 機能:指定したファイルへ配列の内容を書き込みます # 引数:$filePath - ファイル # :$lines - 行配列 # :$encoding - エンコーディング # 返値:行配列 # 備考:(例1)WriteFile "C:\Users\shin.suzuki\Desktop\test3.txt" $lines # :(例2)WriteFile "C:\Users\shin.suzuki\Desktop\test4.txt" $lines "String" ################################################################################ function WriteFile($filePath, $lines, [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]$encoding="UTF8") { foreach($line in $lines){ Add-Content -Path $filePath -Value $line -Encoding $encoding } } ################################################################################ # 機能:指定したCSVファイルの内容を配列として返します # 引数:$csvFilePath - ファイル # :$lines - 行配列 # :$headers - ヘッダ項目配列 # :$encoding - エンコーディング # 返値:行配列 # 備考:(例1)$datas = ReadCsvFile "C:\Users\shin.suzuki\Desktop\csv_data2.csv" "" "UTF8" # :(例2)$headers = @(0,1,2,3,4); #1行目がヘッダ部ではない場合 # : $datas = ReadCsvFile "C:\Users\shin.suzuki\Desktop\csv_data3.csv" $headers "UTF8" # :(例3)$datas = ReadCsvFile "C:\Users\shin.suzuki\Desktop\csv_data2.csv" "" "Default" # :(例4)$headers = @(0,1,2,3,4); #1行目がヘッダ部ではない場合 # : $datas = ReadCsvFile "C:\Users\shin.suzuki\Desktop\csv_data4_sjis.csv" $headers "Default" # 備考:色々処理したあとのCSV出力は手で作成後に、WriteFileで出力対応とする。 ################################################################################ function ReadCsvFile($csvFilePath, $headers="", [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]$encoding="UTF8") { if($headers -eq ""){ Write-Host $headers $datas = Import-Csv -Path $csvFilePath -Encoding $encoding }else{ Write-Host $headers $datas = Import-Csv -Path $csvFilePath -Encoding $encoding -Header $headers } return $datas } ################################################################################ # 機能:ファイルを作成します # 引数:$path - パス # :$fileName - ファイル名 # 返値:なし # 備考:(例1)CreateFile "c:\" "test.txt" "force" # :(例2)CreateFile "c:\" "test.txt" ################################################################################ function CreateFile($path, $fileName, $force="") { if($force -eq "force"){ New-Item -Name $fileName -ItemType File -Path $path -Force }else{ New-Item -Name $fileName -ItemType File -Path $path } } ################################################################################ # 機能:ディレクトリを作成します # 引数:$path - パス # :$dirName - ディレクトリ名 # 返値:なし # 備考:(例1)CreateDir "c:\" "test_data" ################################################################################ function CreateDir($path, $dirName) { $fullaPath = Join-Path $path $dirName if((Test-Path -Path $fullaPath) -eq $false){ New-Item -Name $dirName -ItemType Directory -Path $path } } ################################################################################ # 機能:ファイルを削除します # 引数:$filePath - ファイルパス # 返値:なし # 備考:(例1)DeleteFile "C:\test_data\test.txt" ################################################################################ function DeleteFile($filePath) { if((Test-Path -Path $filePath) -eq $true){ Remove-Item $filePath } } ################################################################################ # 機能:ディレクトリを削除します # 引数:$dirPath - ディレクトリパス # 返値:なし # 備考:(例1)DeleteDir "C:\test_data\" ################################################################################ function DeleteDir($dirPath) { if((Test-Path -Path $dirPath) -eq $true){ Remove-Item $dirPath -Recurse } } ################################################################################ # 機能:アイテムをコピーします # 引数:$src - コピー元アイテム # :$dest - コピー先アイテム # 返値:なし # 備考:(例1)CopyItem "C:\test_data\test.txt" "C:\test_data2\test.txt" "force" # :(例2)CopyItem "C:\test_data\" "C:\test_data2\" ################################################################################ function CopyItem($src, $dest, $force="") { if($force -eq "force"){ Copy-Item $src $dest -Recurse -Force }else{ Copy-Item $src $dest -Recurse } } ################################################################################ # 機能:アイテムを移動します # 引数:$src - 移動元アイテム # :$dest - 移動先アイテム # 返値:なし # 備考:(例1)MoveItem "C:\test_data\test.txt" "C:\test_data2\test.txt" "force" # :(例2)MoveItem "C:\test_data\" "C:\test_data2\" ################################################################################ function MoveItem($src, $dest, $force="") { if($force -eq "force"){ Move-Item $src $dest -Force }else{ Move-Item $src $dest } }