我在 中安裝了許多實用程序C:\program files (x86)\git\bin
,其中許多是影子內建命令列函數。為了不發生衝突,我寧願不將該資料夾添加到 PATH 中,但是我確實希望能夠diff a.txt b.txt
在任何地方鍵入並對這兩個資料夾運行 diff。
我嘗試過的事情:
- 新增了一個
diff.exe
子項[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths]
- 創建了一個
diff.lnk
inC:\dev
(位於我的 PATH 上)並添加.LNK
到我的 PATHEXT diff.bat
使用以下程式碼建立了一個:@"C:\Program Files (x86)\git\bin\diff.exe" *$
唯一有效的方法是最後一種方法,它(儘管它運行diff
)無法找到我透過命令列指定的任何檔案。
同樣,如果我目前在但不在其他地方,則允許diff
運行第二種方法。C:\dev
我有一個doskey
作為別名機器工作的腳本(特別是:npp=notepad++
在 cmd 啟動時),但我不想為此求助於它。如果有必要的話我會的。
有什麼建議麼?知道為什麼上面的方法不起作用嗎?
答案1
知道為什麼上面的方法不起作用嗎?
一些。
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
對 沒有影響cmd
,因為cmd
不用於ShellExecuteEx
執行程式。- 建立
.lnk
文件應該有效。 從你的描述來看,這個說法最有可能是
事實上並非如此。C:\dev
在我的PATH
. diff.bat
沒有按您想要的方式工作,因為您用於替換所有位置參數的語法是亂碼。*$
甚至不是一次偶然的攻擊。如前所述,%*
是在腳本中執行此操作的正確語法cmd
。 (這也是 Take Command 的正確語法,它支援%#
作為獎勵。)