給定一個文件,取得單獨(結構相同)目錄中的位置?

給定一個文件,取得單獨(結構相同)目錄中的位置?

作為一個對 Windows shell 和 cmd 腳本完全陌生的人,我正在努力解決這個特定問題,但一無所獲。

我的目標是新增一個上下文選單項,右鍵單擊檔案以啟動 WinMerge 並將其與單獨的靜態目錄中的該檔案進行比較。如果這呼叫一個特定的 cmd 文件,然後執行解析目錄的操作,那應該無關緊要。

例如,我們有一組假設的目錄和檔案:

C:\released\versions\1.0\lib\libcode.cpp
C:\released\versions\1.0\component\componentcode.cpp
C:\dev\lib\libcode.cpp
C:\dev\component\componentcode.cpp

右鍵點選 C:\released\versions\1.0\component\componentcode.cpp 並選擇此項目將開啟 WinMerge 並將其與 C:\dev\component\componentcode.cpp 進行比較

我們可以假設 \dev\ 和 \1.0\ 的所有內容在結構上對所有意圖和目的都是相同的。顯然,WinMerge 本身的啟動命令很簡單,但我無法確定基本程式碼目錄內檔案的相對路徑。

答案1

也許這對您有幫助:

我有一個腳本可以自動從單一檔案建立自解壓縮 zip。出於顯而易見的原因,我已將此腳本新增至上下文功能表。您可以嘗試在上下文選單中新增呼叫腳本的命令,%1螢幕截圖中的是右鍵單擊檔案的完整路徑,包括檔案名稱:

在此輸入影像描述

本質上,在 HKCR\*\shell 下建立一個新的註冊表項,並將其命名為您希望在上下文選單中顯示的任何名稱。在標示為「Command」的位置下建立一個新鍵,並將該鍵的預設值設為您要呼叫的命令。在您的情況下,您可能需要一個簡單的 powershell 腳本,該腳本將路徑作為參數並基於該路徑建立新路徑,然後呼叫 winMerge 並傳入這兩個路徑。 Powershell 不難上手,例如

param([String]$Path=$null)

$CodeDir = "C:\dev\component\"

$File1 = $Path
$File2 = "$CodeDir$(Get-ItemProperty $Path).Name"

Start-Process WinMerge.exe -Argumentlist "$File1 $File2"

顯然可以進行一些優化,但希望您明白這一點。我沒有 WinMerge,所以我不知道正確的語法,但這是需要發生的事情的概要。要呼叫您的腳本,您可以查看我的螢幕截圖並將我的腳本路徑替換為您的腳本路徑,您將需要安裝 Vista+ 上標配的 powershell。

相關內容