找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15841|回复: 0

[技术讨论] PowerShell鼠标右键集成【去除文件夹内重复文件】

[复制链接]
发表于 2019-4-23 18:51:18 | 显示全部楼层 |阅读模式
效果:去除文件夹和子文件内的所有重复文件,只保留第一个。
WIN8  WIN10 按 [SHIFT]后 会在文件夹点右键后的菜单中底部显示。WIN7 可能会直接显示,WIN7 因该不支持[SHIFT]功能。

过滤方法是 哈希值 验证。 N 种方法中的 一种:保存为 DelRepeatFiles.ps1 右键运行。

  1. $Code = @'
  2. @echo off & cd/d "%~dp0"
  3. set "Folder=%~1"

  4. Powershell -executionpolicy remotesigned ^
  5.         $TMP = @{};^
  6.         ls '%Folder%' -filter * -exclude "$PSCommandPath" -rec ^|^
  7.         Where {$_.Directory} ^| Sort -desc ^|^
  8.         Foreach {^
  9.                 $hash = ( get-filehash $_.fullname -algorithm sha256 ).hash;^
  10.                 if ( $TMP.ContainsKey( $hash ) ) {^
  11.                         del $_.fullname -verb;^
  12.                 } else { $TMP.Add( $hash,$_ ) };^
  13.         };
  14. CMD /c pause;
  15. '@

  16. $Execution = @'
  17. Copy "$env:temp\清理文件夹内重复文件.CMD" -dest "$env:windir" -force;
  18. $reg = "Registry::HKCR\Folder\shell";
  19. New-Item "$reg\DelRepeatFile" -force -verb;
  20. New-ItemProperty "$reg\DelRepeatFile" -Name 'Extended' -force -verb;
  21. New-ItemProperty "$reg\DelRepeatFile" -Name 'MUIVerb' -Value '删除重复的多余文件' -Force -verb;
  22. New-ItemProperty "$reg\DelRepeatFile" -Name 'Position' -Value 'Bottom' -Force -verb;
  23. New-ItemProperty "$reg\DelRepeatFile" -Name 'Icon' -Value 'SHELL32.dll,171' -Force -verb;

  24. New-Item "$reg\DelRepeatFile\command" -force -verb;
  25. Set-ItemProperty "$reg\DelRepeatFile\command" -Name '(default)' -type 'ExpandString' -Value "`"%Windir%\清理文件夹内重复文件.cmd`" `"%1`"" -force -verb;

  26. $file = Get-Item "$env:Windir\清理文件夹内重复文件.CMD";
  27. $file.Attributes = 'ReadOnly','System','Hidden','Archive';
  28. CMD /c pause;
  29. '@

  30. Set-content "$env:temp\清理文件夹内重复文件.CMD" -Value $Code -enc Default -force;
  31. Set-content "$env:temp\Reg.ps1" -Value $Execution -enc Default -force;

  32. Start-Process Powershell.exe "-NoProfile -Execution RemoteSigned -File `"$env:temp\Reg.ps1`"" -verb runas;
  33. CMD /c pause;
  34. Remove-Item "$env:temp\清理文件夹内重复文件.CMD" -Force;
  35. Remove-Item "$env:temp\Reg.ps1" -Force;
复制代码
=============Enjoy====================

评分

参与人数 3技术 +3 收起 理由
ivor + 1 感谢分享
Batcher + 1 感谢分享
老刘1号 + 1 实用,5-14行拿走了

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:34 , Processed in 0.017617 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表