:::

立刻取得檔案路徑!傳送到「filepath-to-clipboard」 / Copy Filepath in “Send to”: filepath-to-clipboard

image

我很喜歡Q-Dir的「複製路徑」功能,它可以讓我快速取得檔案的路徑。後來想想,其實我也能用AutoIt做一個類似的功能出來,還能加在Windows的「傳送到」選單裡面,這樣可以讓每個程式都能用「複製路徑」了。以下就是介紹我做的filepath-to-clipboard.exe


檔案下載 / Download

image

filepath-to-clipboard是用AutoIt所開發的免安裝的可攜程式,從上面網址可以下載壓縮檔「filepath-to-clipboard-master.zip」,請使用PeaZip之類的解壓縮軟體解壓縮,擺放到任意資料夾即可。

我個人喜歡把綠色免安裝軟體擺放到「D:\PortableApps」當中 (為什麼是D磁碟分割呢?請看「Windows 7改變「桌面」、「我的文件」等個人資料夾的位置」這篇的理由)。但放哪裡都可以啦。

加入到「傳送到」選單 / Add to "Send to" Menu

image

為了能夠讓filepath-to-clipboard能夠在「傳送到」選單中使用,我們需要幫它在「傳送到」選單的目錄加入捷徑中。

「傳送到」選單的路徑通常在這裡:(詳細操作請看Windows 7-自訂傳送到的內容)

  • C:\Users\[你的Windows帳號]\AppData\Roaming\Microsoft\Windows\SendTo

請將filepath-to-clipboard中的「filepath-to-clipboard.exe」跟「dirpath-to-clipboard.exe」複製、貼上捷徑到這個資料夾,然後修改捷徑名稱為「filepath-to-clipboard」跟「dirpath-to-clipboard」。

image

這樣以後在「傳送到」選單裡面就會出現「filepath-to-clipboard」跟「dirpath-to-clipboard」了。

將檔案傳送到「filepath-to-clipboard」 / Send file to "filepath-toclipboard"

filepath-toclipboard裡面有兩個exe檔案,功能各別如下:

  • filepath-to-clipboard.exe:取得檔案的路徑,複製到剪貼簿中。
  • dirpath-to-clipboard.exe:取得檔案所在的資料夾路徑,複製到剪貼簿中。

以下說明filepath-to-clipboard的使用方式:

image

現在我想要取得「README.md」的檔案路徑。

image

在該檔案上按滑鼠右鍵,進入「傳送到」選單,開啟「filepath-to-clipboard」。

接下來什麼事情都不會發生,但是檔案路徑已經複製到你的剪貼簿了。找個可以編輯的地方貼上看看,就會出現像是下面的檔案路徑:

  • "D:\PortableApps\filepath-to-clipboard\README.md"

這樣就完成囉。


常用的AutoIt腳本 / AutoIt Script

繼上次的「image-splitter」之後,我發現像是「filepath-to-clipboard.au3」這樣的AutoIt腳本真的蠻好用的。

在這個程式中主要使用到兩種技巧:

以下是filepath-to-clipboard.au3這個檔案的程式碼,未來應該很多機會可以參考:

$add_double_quotes = IniRead ( @ScriptDir & "\config.ini", "config", "add_double_quotes", "1" )
$double_quotes = '"'
If $add_double_quotes <> "1" Then
   $double_quotes = ''
EndIf

$multifiles_seperator = IniRead ( @ScriptDir & "\config.ini", "config", "multifiles_seperator", "1" )
$seperator = ' '
If $multifiles_seperator == "2" Then
   $seperator = @LF
EndIf

$clipboard = ""
For $i = 1 To $CmdLine[0]
   Local $filePath = $CmdLine[$i]
   If FileExists ($filePath) == 1 Then
    If $clipboard <> "" Then
     $clipboard = $clipboard & $seperator
    EndIf
    $clipboard = $clipboard & $double_quotes & $CmdLine[$i] & $double_quotes
   EndIf
Next

If $clipboard <> "" Then
   ClipPut ( $clipboard )
EndIf

結語 / Conclusion

這次用AutoIt來操作剪貼簿以實作「複製路徑」的功能。「複製路徑」功能看似簡單,我卻意外地時常用到它。

image

我最常做的事情是「複製檔案路徑」到需要開啟檔案的地方貼上,這樣就可以省去我在其他程式中一一翻找資料夾的困擾。以上面的例子來說,我只要複製了README.md的路徑,就能在記事本的開啟對話視窗中直接貼上路徑並開啟檔案。這樣是不是比起從桌面開始翻找資料夾來說快上許多呢。

此外,這次我順便也把常用的AutoIt腳本整理附上,未來它應該會繼續派上用場。不過這次安裝與配置看起來還是稍嫌複雜,之後可以考慮使用「Inno Setup」來打包這種綠色工具,讓安裝更簡單吧。

雖然是這樣說,我還是覺得這工具大概只有少數幾個比較會操作電腦的人才會想用,那也就不用這麼麻煩了吧。