このエントリーをはてなブックマークに追加


PowerShellでファイルやフォルダをごみ箱に移動する方法

ファイルまたはフォルダを指定してごみ箱に移動するサンプルスクリプトを公開します。
エラー処理等が不足していますが、参考にしてください。
以下に使用例などを記します。

使用上の注意
USBメモリなど外部にあるファイルはごみ箱に移動できません。
これはエクスプローラー操作による動作と同様です。

当サイトの資料により直接的および間接的障害が生じても一切責任を負いません。
あらかじめご了承ください。自己責任のもとで本資料をご利用ください。


参考資料

本資料で使用したWindowsおよびPowerShellのバージョン

PS C:\> [System.Environment]::OSVersion | Format-List

Platform      : Win32NT
ServicePack   :
Version       : 10.0.17134.0
VersionString : Microsoft Windows NT 10.0.17134.0

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.17134.228
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17134.228
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

サンプルスクリプト

以下のサンプルスクリプトは2つのファンクションを記述してあります。

  1. Folder-ToRecycleBin ファイル名
    引数に指定したフォルダをごみ箱に移動します。
  2. File-ToRecycleBin フォルダ名
    引数に指定したファイルをごみ箱に移動します。

fileToRecycle.zip : (SJIS, CRLF)

Add-Type -AssemblyName Microsoft.VisualBasic

# フォルダをゴミ箱に移動する
function Folder-ToRecycleBin($target_dir_path) {
  if ((Test-Path $target_dir_path) -And ((Test-Path -PathType Container (Get-Item $target_dir_path)))) {
    $fullpath = (Get-Item $target_dir_path).FullName
    [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteDirectory($fullpath,'OnlyErrorDialogs','SendToRecycleBin')
  } else {
    Write-Output "'$target_dir_path' is not directory or not found."
  }
}

# ファイルをゴミ箱に移動する
function File-ToRecycleBin($target_file_path) {
  if ((Test-Path $target_file_path) -And ((Test-Path -PathType Leaf (Get-Item $target_file_path)))) {
    $fullpath = (Get-Item $target_file_path).FullName
    [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($fullpath,'OnlyErrorDialogs','SendToRecycleBin')
  } else {
    Write-Output "'$target_file_path' is not file or not found."
  }
}

使用方法

以下、実際に上記スクリプトを使用してみます。

  1. 上記スクリプトコピーし、PowerShellコンソールに貼り付けました。
    (PowerShellの実行セキュリティポリシーを変更していなかったので、Pasteしました。)
    00.png
     
  2. ごみ箱移動対象とするファイルとフォルダを作成してみます。
    PS C:\work> (Get-Location).Path
    C:\work
    PS C:\work> Get-ChildItem *
    PS C:\work> "Hello" | Out-File hello.txt -Encoding default
    PS C:\work> New-Item folder -Type Directory
    
        ディレクトリ: C:\work
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----       2018/09/09     15:17                folder
    
    PS C:\work> Get-ChildItem
    
        ディレクトリ: C:\work
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----       2018/09/09     15:17                folder
    -a----       2018/09/09     15:17              7 hello.txt
    01.png
     
    02.png
     
  3. ファイルをごみ箱に移動してみます。
    1. ファイル移動までのごみ箱の状態
      03.png
       
    2. 以下のコマンドを実行
      File-ToRecycleBin .\hello.txt
      04.png
       
    3. ごみ箱を確認すると、指定したファイルが移動されています。
      05.png
       
    4. フォルダのを確認すると、指定したファイルが消えています。
      06.png
       
  4. フォルダ(ディレクトリ)をごみ箱に移動してみます。
    1. 以下のコマンドを実行
      Folder-ToRecycleBin .\folder\
      07.png
       
    2. ごみ箱を確認すると、指定したフォルダが移動されています。
      08.png
       
    3. フォルダのを確認すると、指定したフォルダが消えています。
      09.png
       

以上のように、ファイルおよびフォルダがごみ箱に移動されています。
再度注意!
USBメモリなどの外部ストレージの場合、移動されずに削除されます。
これは、エクスプローラーでの操作と同じになりますのご注意ください。

Aliasを使って便利に使う

上記の2つのファンクションをAliasとして設定すれば、便利に使えるかもしれません。
Set-Aliasで本ファンクションを設定しています。

Remove-Item Alias:del
Set-Alias -name del -value File-ToRecycleBin
Remove-Item Alias:rmdir
Set-Alias -name rmdir -value Folder-ToRecycleBin

上記のエイリアス設定により、del, rmdirでファイルを指定すると、ごみ箱に移動されます。

以上、PowerShellでファイルおよびフォルダをゴミ箱に移動するサンプルスクリプトでした。



添付ファイル: fileToRecycle.zip 455件 [詳細] file09.png 481件 [詳細] file08.png 511件 [詳細] file07.png 548件 [詳細] file06.png 457件 [詳細] file05.png 474件 [詳細] file04.png 544件 [詳細] file03.png 468件 [詳細] file02.png 496件 [詳細] file01.png 525件 [詳細] file00.png 647件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-09 (日) 15:44:09