중복된 .exe 파일의 실행 우선순위를 지정하는 Windows Bash 파일

중복된 .exe 파일의 실행 우선순위를 지정하는 Windows Bash 파일

나는 모든 비밀번호에 비밀번호 관리자를 사용합니다. 기본 .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에서 논리를 한 줄씩 실행해 보았습니다. 이것은 작동하지만 단순히 디렉토리를 여는 것보다 더 많은 작업입니다. 그런 다음 프로세스를 자동화하기 위해 쉘 스크립트를 작성하기 시작했지만 자격 증명 중 일부를 일반 텍스트로 저장해야 하므로 이를 피하고 싶다는 사실을 곧 깨달았습니다. 코드 작성에 도움이 필요하지 않습니다. 검색 후에도 이 프로세스를 자동화하는 최상의 절차를 찾을 수 없습니다.

파일에 액세스할 수 있는 사람에게 자격 증명을 노출하지 않고 이 프로세스를 자동화하는 가장 효율적인 방법은 어떤 유형의 실행 방법(셸 스크립트, 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

관련 정보