PowerShellを使って、カレントフォルダ内のファイルを更新日時でフォルダ分けするスクリプトを作成しました。
写真データ、動画データ、Excelデータなどの整理に役立つと思います。
更新月で分けるものと、更新日で分けるものがありますので、好きな方を使ってください。
使用は自己責任でお願いします。
使い方は簡単。
メモ帳を開き、下記のスクリプトを貼り付け、ps1形式で保存してください。
保存後、整理したいフォルダの中にps1ファイルを入れ、右クリック→「PowerShellで実行」を押すと、ファイルの更新月または更新日でフォルダが作成され、その中にファイルが仕分けられます。
デフォルトだと、.jpg、.jpeg、.png、.gifのファイル形式に対応しています。
ファイル形式を追加したい場合は、「, *.zip」のような形で追加してください。
全てのファイル形式やフォルダを対象にしたい場合は、拡張子を指定している部分を削除し、「ls | ForEach-Object{」としてください。
一点注意がありまして、windowsの設定がデフォルトだとPowerShellを実行できないようになっているので、実行ポリシーを変更する必要があります。
PowerShellを管理者権限で起動し、「Set-ExecutionPolicy RemoteSigned」を実行すれば、PowerShellが実行出来るようになります。
公開用のアップローダーにもアップしてあるので、良かったらどうぞ。
ファイル置き場
#【更新月でフォルダ分けする】
#カレントフォルダを取得
$MyInvocation.MyCommand.Path
#指定した拡張子に対して処理を行う
ls *.jpg , *.jpeg , *.png, *.gif | ForEach-Object{
#ファイルの更新月を取得し、移動先フォルダ名として使用
$desti_folder = $_. LastWriteTime | Get-Date -Format "yyyy年MM月"
#更新月のフォルダが存在しなければ、ファイルの更新月でフォルダを作成する
$exists = Test-Path $desti_folder
if (-not $exists) { mkdir $desti_folder }
#ファイル名を取得する
$filename = $_. Name
#移動先のファイル名を作成する
$desti_file = Join-Path $desti_folder $filename
#ファイルを移動する(-LiteralPathでワイルドカードを展開しないようにする=[]がファイル名に含まれていても大丈夫なようにする)
Move-Item -LiteralPath $filename -destination $desti_file
}
#メッセージ表示
Read-Host "処理が完了しました。続けるにはENTERキーを押して下さい。"
#【更新日でフォルダ分けする】
#カレントフォルダを取得
$MyInvocation.MyCommand.Path
#指定した拡張子に対して処理を行う
ls *.jpg , *.jpeg , *.png , *.gif | ForEach-Object{
#ファイルの更新日を取得し、移動先フォルダ名として使用
$desti_folder = $_. LastWriteTime | Get-Date -Format "yyyyMMdd"
#更新日のフォルダが存在しなければ、ファイルの更新日でフォルダを作成する
$exists = Test-Path $desti_folder
if (-not $exists) { mkdir $desti_folder }
#ファイル名を取得する
$filename = $_. Name
#移動先のファイル名を作成する
$desti_file = Join-Path $desti_folder $filename
#ファイルを移動する(-LiteralPathでワイルドカードを展開しないようにする=[]がファイル名に含まれていても大丈夫なようにする)
Move-Item -LiteralPath $filename -destination $desti_file
}
#メッセージ表示
Read-Host "処理が完了しました。続けるにはENTERキーを押して下さい。"
写真データ、動画データ、Excelデータなどの整理に役立つと思います。
更新月で分けるものと、更新日で分けるものがありますので、好きな方を使ってください。
使用は自己責任でお願いします。
使い方は簡単。
メモ帳を開き、下記のスクリプトを貼り付け、ps1形式で保存してください。
保存後、整理したいフォルダの中にps1ファイルを入れ、右クリック→「PowerShellで実行」を押すと、ファイルの更新月または更新日でフォルダが作成され、その中にファイルが仕分けられます。
デフォルトだと、.jpg、.jpeg、.png、.gifのファイル形式に対応しています。
ファイル形式を追加したい場合は、「, *.zip」のような形で追加してください。
全てのファイル形式やフォルダを対象にしたい場合は、拡張子を指定している部分を削除し、「ls | ForEach-Object{」としてください。
一点注意がありまして、windowsの設定がデフォルトだとPowerShellを実行できないようになっているので、実行ポリシーを変更する必要があります。
PowerShellを管理者権限で起動し、「Set-ExecutionPolicy RemoteSigned」を実行すれば、PowerShellが実行出来るようになります。
公開用のアップローダーにもアップしてあるので、良かったらどうぞ。
ファイル置き場
#【更新月でフォルダ分けする】
#カレントフォルダを取得
$MyInvocation.MyCommand.Path
#指定した拡張子に対して処理を行う
ls *.jpg , *.jpeg , *.png, *.gif | ForEach-Object{
#ファイルの更新月を取得し、移動先フォルダ名として使用
$desti_folder = $_. LastWriteTime | Get-Date -Format "yyyy年MM月"
#更新月のフォルダが存在しなければ、ファイルの更新月でフォルダを作成する
$exists = Test-Path $desti_folder
if (-not $exists) { mkdir $desti_folder }
#ファイル名を取得する
$filename = $_. Name
#移動先のファイル名を作成する
$desti_file = Join-Path $desti_folder $filename
#ファイルを移動する(-LiteralPathでワイルドカードを展開しないようにする=[]がファイル名に含まれていても大丈夫なようにする)
Move-Item -LiteralPath $filename -destination $desti_file
}
#メッセージ表示
Read-Host "処理が完了しました。続けるにはENTERキーを押して下さい。"
#【更新日でフォルダ分けする】
#カレントフォルダを取得
$MyInvocation.MyCommand.Path
#指定した拡張子に対して処理を行う
ls *.jpg , *.jpeg , *.png , *.gif | ForEach-Object{
#ファイルの更新日を取得し、移動先フォルダ名として使用
$desti_folder = $_. LastWriteTime | Get-Date -Format "yyyyMMdd"
#更新日のフォルダが存在しなければ、ファイルの更新日でフォルダを作成する
$exists = Test-Path $desti_folder
if (-not $exists) { mkdir $desti_folder }
#ファイル名を取得する
$filename = $_. Name
#移動先のファイル名を作成する
$desti_file = Join-Path $desti_folder $filename
#ファイルを移動する(-LiteralPathでワイルドカードを展開しないようにする=[]がファイル名に含まれていても大丈夫なようにする)
Move-Item -LiteralPath $filename -destination $desti_file
}
#メッセージ表示
Read-Host "処理が完了しました。続けるにはENTERキーを押して下さい。"
※コメント投稿者のブログIDはブログ作成者のみに通知されます