※ 本文轉寄自 ptt.cc, 文章原始頁面
[問題] 安裝 Console 應用程式
準確來說是把程式目錄新增至環境變數 PATH 之中,
方便在終端機中使用檔名或 basename 呼叫程式並執行。
但當程式越來越多後 PATH 就會變得越來越臃腫。
為了保持 PATH 簡潔,需要統一使用同一個目錄,我嘗試了以下方法。
方法 1. 在同一目錄下放置所有程式的子目錄、檔案
這是最簡單粗暴的方法
但,由於所有程式的子目錄與檔案都混在一起,
可能遇到檔案衝突,且管理上也很不方便。
方法 2. 在同一目錄建立目標程式的符號連結
PowerShell:
--------
New-Item -ItemType SymbolicLink -Path program1.exe -Target "C:\My Programs\pro
gram1\program1.exe"
--------
符號連結的好處是簡單且方便管理。
但通過符號連結執行程式會因為找不到依賴的檔案 (例如 dll 檔) 而無法正常執行,
所以只適合用於單 exe 檔的程式。
或者,要為所有項目也建立符號連結。
但這可能會與其他程式的同名子目錄或檔案的符號連結衝突。
方法 3. 在同一目錄下建立執行目標程式的 bat 檔案
program1.bat:
--------
@echo off
"C:\My Programs\program1\program1.exe" %*
exit /b %ERRORLEVEL%
--------
bat 檔的好處是可以使用 set 命令預先設定必要的臨時環境參數。
但使用 bat 檔會遇到一個棘手的問題。
由於 bat 的 args 需要按照 cmd 的方式跳脫字元,
這導致我必須重寫現有 powershell 腳本裡的受影響的程式的執行命令。
或者必須在 bat 內就跳脫所有特殊字元,
但 cmd 貧弱的字串處理能力,還有一堆例外狀況,想到就讓人怯步…
以上三種方法無論是哪一種都有缺點
搞了半天還是乖乖往 PATH 內新增每個程式的目錄比較實際...
有沒有人知道更加漂亮的解決方式?
--
Sent from PTTopia
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.231.152.70 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Windows/M.1714045005.A.193.html
推
→
→
推
→
→
→
→
推
推
推
→
推
→
→
→
→
→
推
→
→
→
推
→
→
推
推
→
推
→
→
→
推
→
→
推
→
→
→
→