2012年6月27日水曜日

[PowerShell] 拡張子を見て整理してくれるロボット

PowerShellで簡単なプログラムを書いてみました。
簡単なと言っても自分にとってはわりと難しくて 4時間くらいかかっちゃいましたが…
 Windows7にある「ダウンロード」フォルダ内に散らばってる
色んなお宝を拡張子で分けて拡張子フォルダを作って
そこに片付けてくれます。


#-----------------------------------------------------------
#ガシャーン。拡張子判断ロボだよ。
#拡張子の名前でフォルダを作って放り込むすごいやつだよ
#-----------------------------------------------------------

#-----------------------------------------------------------
#フォルダ作成関数
#-----------------------------------------------------------
Function Create-Folder( $folderName )
{
 if(Test-Path $folderName)
 {
 }
 else
 {
  $currentDirectory = Get-Location
  $createLocation = "$currentDirectory\$folderName"
  New-Item -type directory $createLocation
 }
}

#-----------------------------------------------------------
#Main的な
#-----------------------------------------------------------
#PowerShellの実行権限を一時的にRestrictedまで拡大し実行可能にする
$myPolicy = Get-ExecutionPolicy
if( $myPolicy -ne "Unrestricted" )
{
 set-executionpolicy Unrestricted
}

#実行しているユーザ名を取得し、それを利用して「ダウンロード」フォルダへ移動する。
$targetDirectory = "C:\Users\" + $env:username + "\Downloads\"
cd $targetDirectory

#「ダウンロード」フォルダ内のすべてのファイルを配列として変数に格納
$downloadItems = Get-ChildItem

Foreach( $aItem in $downloadItems )
{
 #フォルダ/ファイル判定
 if ( $aItem.PSIsContainer )
 {
  Write-Host "フォルダ: " -NoNewLine
  write-host "$aItem - フォルダなので無視します。"
 }
 else
 {
  Write-Host "ファイル: " -NoNewLine
  write-host $aItem.PSChildName
  #ファイルなら拡張子の文字数を確認
  [string]$itemName = $aItem.PSChildName
  $intNuberOfKakutyousi = $itemName.length - $itemName.LastIndexOfany(".") - 1
  $kakutyousi = $itemName.substring( $itemName.length - $intNuberOfKakutyousi )
  Create-Folder($kakutyousi)
  Move-Item $aItem $kakutyousi
 }
}

#ExecutionPolicyをもとに戻す
if( $myPolicy -ne "Unrestricted" )
{
 Set-ExecutionPolicy $myPolicy
}


ていうかさ、このコードを色分けしてくれる機能すごいね。
 ここを参考にさせていただきました。 PowerShell自体は、
PowerShell基礎文法最速マスター と、TechNetのコマンドレット一覧と、
あとVBScript使ったことある人ならここもすごく役に立ちます。

 ひとまずブログに書けた。 ホントはGitの練習してGithubにアップしたい。



0 件のコメント:

コメントを投稿