Windows Bash 檔案優先執行冗餘 .exe 檔案

Windows Bash 檔案優先執行冗餘 .exe 檔案

我對所有密碼都使用密碼管理器。首選 .exe 從加密的 USB 隨身碟運作。我的筆記型電腦上有一個備份,位於 VeraCrypt 容器內,另一個則託管在伺服器上。

我更喜歡只使用我的便攜式版本,除非我碰巧丟失了它或無法訪問它。我不想手動打開目錄並運行我想要使用的 .exe 文件,而是希望將該過程自動化為:

File pManager = PasswordManager.exe
File U = USB.pManager
File L = Laptop.pManager
File S = Server.pManager

if (USB.isConnected && U.isPresent): Run --> U
if (!USB.isConnected && L.isPresent): Run => L
else (Server.Connect)
  if (S.isPresent): Run=> S
    else:
     Message("Find your USB Key!")

我嘗試在 bash/cmd/PowerShell 中逐行執行邏輯 - 這可行,但比簡單地打開目錄需要更多工作。然後,我開始編寫一個 shell 腳本來自動化這個過程,但很快就意識到我必須以純文字形式儲存我的一些憑證,這是我想避免的。我不需要編寫程式碼的幫助;搜尋後我找不到自動化此過程的最佳程式。

哪種類型的執行方法(shell 腳本、C/Java 程式)是自動化此過程的最簡化方法,而不會將憑證暴露給可能存取該檔案的人?

答案1

以下批次檔解決了我的問題,之後不會留下任何 CMD 視窗掛起,並檢查以確保該進程未運行並且驅動器已安裝。

相同的邏輯可用於存在於多個位置的任何檔案。 CMD 視窗保持開啟的唯一時間是進程已在執行時。

如果您不想收到已執行進程的通知,請刪除該:ProcessFound部分並將條件語句定向到goto END

:: Batch file to open Password Manager. Prefer .exe located on USB drive
:: If USB not mounted, open local (D:) version.

@echo off
SETLOCAL EnableExtensions

set EXE=PWManager.exe
set USB="F:\Password\PWManager.exe"
set HDD="D:\Software\Password\PWManager.exe"

FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto ProcessFound

goto ProcessNotFound

:ProcessFound
echo %EXE% is already running. Ensure it is running from the correct location...
pause
goto END

:ProcessNotFound
if exist f:\ (
    goto USBMounted
    
)
goto USBNotMounted

:USBMounted
start "" %USB%
goto END

:USBNotMounted
start "" %HDD%
goto END

:END
exit

相關內容