タッチパネルWindows PCで誤ってファイルコピーしたときに取り消す方法
なにを言ってるのかイミフなタイトルなので補足
状況が伝わりにくいかもしれません。こういうことがありました。
そのとき対処した内容のメモです。
- タッチパネルPCで外付けドライブに一部のファイルを退避しようと思い立った
- ファイルが飛び飛びなのでCtrlを押しながらタップして選択まくった
- 100個ぐらい選んだところで手が滑ってスワイプ(ドラッグ)した
→ Ctrlマウスドラッグでファイルコピーしたときと同じ操作になったぞい。
- 選択の労力はパーになるわ、「なになに - コピー.*」なファイルが大量に作られるわで怒髪天
コピーを無理くり取り消す
- なんか右クリックでundoできませんでした。何故。
仕方ないので「コピー」の名を持ってるファイルを検索してあぶり出し、全部けします。
しかしWindowsの検索窓は気まぐれなので、よくわからん検索結果を提示してきてあてになりません。
- Windows2000ぐらいまでの厳密文字列の比較とか正直選ばせてほしい
そこでPowerShellです。「コピー」の名を持つファイルをリストアップして消します。
- どうせPowerShell使うならと、コピー元のハッシュと照合して安全に消します。
組んだPowerShellスクリプトは下段にあります。
一応注意喚起(免責)
ファイルコピーの取り消し(=ファイル削除)を伴うPC操作の話なので取り扱いは事前テストしたうえで慎重に。
不注意で事故っても私は何の責任も持ちません。
作ったもの(説明はあと)
これを走らせます。
自分はPowerShell ISEで即席で書いたのでそのままISEで走らせてps1に保存してました。
# 対象フォルダーは逐次指定するなりカレントにするなりお好きに cd C:\Users\kyhk\Downloads # 重複したやつをリストアップ $dups = gci -Filter "* - コピー*" foreach ($dup in $dups) { # 元ファイル名はたぶんこんなだろう $orig = $dup -replace " - コピー", "" # 元ファイル名でファイル見つけた if (Test-Path $orig) { $hash_orig = Get-FileHash $orig $hash_dup = Get-FileHash $dup # ハッシュも一致した if ($hash_orig.Hash -eq $hash_dup.Hash) { $dup Write-Host "ハッシュ値が同じ元ファイルを検出しました。コピー側を自動で削除します。" del $dup # 消す } } }
説明
極めて大雑把に
- gci:dirコマンドみたいなものです。Filterでワイルドカード付けられます
- Test-Path:ファイルの存在確認できます
- Get-FileHash:ファイルからハッシュオブジェクトを作ります。別のハッシュ値と比べるときはHashプロパティ経由で値を取りませう
これで解決しました
超めんどくさかった