最近、VBSよりPowerShellのほうをよく使うようになった。
イケてないところは多々あるものの、デバッグもしやすいので便利だ。
ファイル操作のアレコレをこの投稿にいろいろ書き足していこうと思う。
(アレコレって、漢字だと「彼是」って書くのね。知らんかった。)
【ファイル検索】
例えば、「Cドライブ」直下のファイルを漁りたいときはこんな感じ。
Get-ChildItemの戻り値を「 」(半角スペース)でSplitしてやれば、ファイル名のリストを取得できる。
$dir = "C:\"; $files = Get-ChildItem $dir; $files_arr = $files -split " ";
【フォルダ検索】
「W」で始まる「Cドライブ」直下のディレクトリを漁りたいときはこんな感じ。
Get-ChildItemの戻り値を「 」(半角スペース)でSplitしてやれば、ディレクトリ名のリストを取得できる。
Where-Object で、「$_.PSIsContainer」を指定すればディレクトリだけを取得できる。
$dir = "C:\"; $subdir = Get-ChildItem $dir | Where-Object { $_.PSIsContainer } | Select-String "^W"; $sub_arr = $subdir -split " ";
【フォルダ・ファイル有無確認】
指定フォルダ、ファイルがあるかどうかは「Test-Path」を使う。
if (Test-Path ($dir)) { # あるとき } else { # ないとき }
【フォルダ作成】
フォルダ作成は「New-Item」で、パスを指定して、「-ItemType Directory」のオプションをつける。
「-Force」はすでにフォルダがあるときは、エラーにならないようにするときにつける。
New-Item $dir -ItemType Directory -Force;
【ファイルコピー】
ファイルコピーは「Copy-Item」で、コピー元のパスを指定して、「-Destination」でコピー先を指定する。
「-Force」はすでにコピー先にファイルがあっても、エラーにならないようにするときにつける。
Copy-Item $src_path -Destination $goto_path -Force;
【ファイル移動】
ファイル移動はコピーしてから削除するのがいい。
「Remove-Item」の「-Recurse」は削除対象がフォルダであれば、中のファイルを削除してからフォルダも消してくれる。
「-Force」をつければ、隠しファイルとかも消してくれるそう。
Copy-Item $src_path -Destination $goto_path -Force; Remove-Item -Path $src_path -Recurse -Force;
【ライブラリ利用】
ライブラリは、パスを指定して読み込んでやらないと使えない。こんな感じ。
[string]$dll = "C:\....\.....dll"; [void][reflection.assembly]::LoadFrom($dll);