Hayashikawa

Hayashikawa

7-Zip 使用 AutoHotkey 快捷解压压缩文件

前言#

之前一直在使用 Bandizip,很喜欢这款软件「自动解压」功能,这个功能与「解压到『文件夹』」功能不完全相同。

官网介绍

  • 当压缩包里只有一个文件时,就会解压到「当前文件夹」

  • 当压缩包里的文件都在同一个文件夹时,就会解压到「当前文件夹」

  • 若非如此,则会解压到「文件名文件夹」中

在 Unix 压缩的文件一般都会捆绑在一个文件夹中,将这些文件解压到「文件名文件夹」时,会出现多个同名文件夹,很不方便。

此时,使用「自动解压」功能就会很方便。Bandizip 会自动判断将文件压缩到「当前文件夹」还是「文件名文件夹」中。

今天突然脑抽卸载了 Bandizip,安装了久仰的 7-Zip,发现在 Windows 11 上右键菜单想使用「解压到『文件夹』」是如此的繁琐,由于 7-Zip 没有适配 Windows 11 的新版右键菜单,所以想要右键解压需要去二级、三级菜单去找,而且也仅仅是「解压到『文件夹』」这种笨拙的选择。若直接打开压缩包使用工具栏的「提取」,当压缩包内的文件都在一级目录,又会直接提取到压缩包所在目录,搞得乱七八糟。

于是开始搜寻快捷方法。首先是找到了适配 Windows 11 新版右键菜单的 Nanazip,但不到不得已不喜欢二次开发;然后搜索到有使用 AutoHotkey 实现Ctrl + Alt +左键选中压缩包实现解压,我尝试使用网络上的脚本复现但失败了,又简单修改下脚本继续尝试但皆无功而返。

最后我选择退而求其次,仍然使用 AutoHotkey,但换一种思路实现。

思路#

  1. 选中压缩文件

  2. 使用 AutoHotkey 发送Ctrl + C命令复制压缩文件路径到剪切板

    Windows「复制」文件时只是把文件的路径寸放到剪切板,类型为 CF_HDROP 一个文件列表,当「粘贴」是才会真正复制文件。

    CF_HDROP:类型HDROP的句柄,用于标识文件列表。 应用程序可以通过将句柄传递给DragQueryFile函数来检索有关文件的信息。

  3. 读取剪切板中压缩文件路径赋予变量SelectedFile

  4. 对变量SelectedFile删除.及之后的扩展名,并赋予变量dirAndFileName

  5. 运行命令7z x "%SelectedFile%" -o"%dirAndFileName%" -y调用 7-Zip 解压压缩文件

脚本内容#

!x::
  ; 复制选中文件
  SendInput, ^c
  Sleep 50
  ; 读取剪贴板选中文件路径
  SelectedFile := Clipboard
  ; 创建文件同名文件夹变量
  dirAndFileName := SubStr(SelectedFile, 1, InStr(SelectedFile, ".", 0, -1) - 1)
  ; 解压到文件同名文件夹下
  RunWait, 7z x "%SelectedFile%" -o"%dirAndFileName%" -y
return

使用方法#

保存脚本内容为 AutoHotkey 文件后运行,选中压缩文件使用Alt + X快捷键即可直接解压压缩文件。

最后#

但是还是不如 Bandizip 的「自动解压」功能(XD(能用就行,不要脑抽

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。