0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

フォルダ直下のファイルを日付毎に仕分けるスクリプト

Posted at

Windowsの端末であとで整理しようと思っていたスクリーンショットがフォルダ上に大量にたまってしまうことが私はよくあります。
これをいったんフォルダ分けして自分の中で何があったかわかるようにしたいと思ったので整理するためのスクリプトを作成しました。

※これを

※こうしたい(各日付フォルダに、各日に取得したスクリーンショットが含まれる)

スクリプト本体

MoveDateFolder.ps1
##########################################################
# フォルダ上のすべてのファイルを、更新日付事に選別しそれぞれのフォルダに移動する
# Usage: .\MoveDateFolder.ps1 <対象フォルダ>
# 2025/2/6
##########################################################

# 引数設定箇所
# $SourceDir: 対象ファイルのあるフォルダ.未指定の場合フォルダ
Param(
    $SourceDir=(Get-Location).Path
)

# 対象フォルダ上のすべてのファイルに対して処理を実行。
# 「-File」オプションを使用してディレクトリは除外する。
foreach ($f in Get-ChildItem -File ${SourceDir}){
    # 移動先フォルダを対象ファイルの更新日付にするため更新日付を取得
    $Directory=$f.LastWriteTime.ToString("yyyyMMdd")
    
    # ファイル名を取得
    $Filename=$f.Name
    
    # ファイルのフルパスを取得
    $FileFull=$f.Fullname
    
    # 移行先フォルダが存在しない場合だけ作成する。
    if (!(Test-Path ${SourceDir}\${Directory}) ){
        New-Item -Path ${SourceDir} -Name $Directory -ItemType "directory" > $null
    }
    write-output "move from $FileFull To ${SourceDir}\${Directory}\"
    
    # フォルダ移動
    move-item $FileFull ${SourceDir}\${Directory}\
}

スクリプトの使い方と仕様

PS> .\MoveDateFolder.ps1 -SourceDir <対象フォルダ>

対象フォルダ : 対象ファイルが存在するフォルダを指定してください。未指定の場合はカレントディレクトリで動作します。

  • 指定したフォルダ上のすべてのファイルを直下に作成した日付フォーマットのフォルダ(yyyymmdd)に各ファイルの最終更新日時を基準に移動します。
  • 操作対象フォルダの確認が入ります。確認に「Y」と入力された場合のみファイルが移動されます。
  • サブフォルダおよびサブフォルダ内のファイルに対しては操作は行われません。

動作確認

冒頭のファイルに適当なフォルダを加えてテスト

実行
一回目は実行をキャンセルし、二回目は実行しました。

一回目実行時は移動されず二回目の実行で移動されました。もともと存在したフォルダは触れられていません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?