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(能用就行,不要腦抽

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。