[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

效果:去除文件夹和子文件内的所有重复文件,只保留第一个。
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

评分人数

返回列表