PowerShellでファイル名に更新日時を付与する

#はじめに
芸のない投稿ばかりですまない。
フォルダを指定し、フォルダ内のファイルについて、ファイルの更新日時を取得し、ファイル名に追記するスクリプトです。
現ファイル名の頭かケツかをユーザーが選択できるようになってます。

#環境
- Windows10 Pro Ver.1703
- PowerShell

#ソースコード
```Powershell:FileRenamer.ps1
# 更新日時追加装置
# フォルダ内のファイルすべてに更新日時を追加する

# ダイアログを使えるようにする
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$process = [System.Diagnostics.Process]::GetCurrentProcess()
$window = New-Object Windows.Forms.NativeWindow
$window.AssignHandle($process.MainWindowHandle)

# ダイアログを表示
$dialog = New-Object System.Windows.Forms.FolderBrowserDialog
$dialog.Description = "フォルダを選択してください"
$dialog.SelectedPath = $PWD
$ret = $dialog.ShowDialog($window)
if($ret -eq [System.Windows.Forms.DialogResult]::OK){
    $Path = $dialog.SelectedPath
} else {
    Read-Host "キャンセルされました。ENTERキーを押してください。"
    return
}

# 追加位置の指定
$pos = Read-Host "付与する位置を、ファイル名の先頭(f)か末尾(r)か選択してください。(f/r)"

# 実処理
foreach($file in Get-ChildItem $Path | Where-Object {-not $_.PSisContainer}){
    $LastTime = ($file.LastWriteTime).ToString("yyyyMMdd")
    $oldname = [System.IO.Path]::GetFileNameWithoutExtension($file)
    switch($pos){
        "f"{
            $newname = $LastTime +"_"+$oldname
        }
        "r"{
            $newname = $oldname+"_"+$LastTime
        }
        default{
            Read-Host "キャンセルされました。ENTERキーを押してください。"
            return
        }
    }
    $file | Rename-Item -NewName {$_.name -replace "$oldname","$newname"}
}
Write-Host "完了しました"
```

あとは汎用化と普及のために、普段使わない人でも起動しやすくするアレを用意。
スクリプトと同フォルダに入れておいて、「こっちを起動してね」的なReadme.txtと一緒に入れておけばOK

```bash:Run.bat
@echo off
powershell -NoProfile -ExecutionPolicy Unrestricted .\FileRenamer.ps1
exit
```

#結果
入力は`f`で

```powershell:before
Mode                LastWriteTime         Length Name                                                                                            
----                -------------         ------ ----                                                                                            
-a----       2018/06/15      9:17              0 aaa.a                                                                                           
-a----       2018/06/15      9:17              0 aaa.b                                                                                           
-a----       2018/06/15      9:17              0 aaa.jx                                                                                          
-a----       2018/06/15      9:17              0 aaa.m       
```

```powershell:after
Mode                LastWriteTime         Length Name                                                                                            
----                -------------         ------ ----                                                                                            
-a----       2018/06/15      9:17              0 20180615_aaa.a                                                                                  
-a----       2018/06/15      9:17              0 20180615_aaa.b                                                                                  
-a----       2018/06/15      9:17              0 20180615_aaa.jx                                                                                 
-a----       2018/06/15      9:17              0 20180615_aaa.m       
```

差し支えない感じ。
偉い人はいちいちファイル並び順を更新日時でソートしてくれないので、
このようにわかりやすい状態で渡してあげると説明がスマートになる（当社調べ）