Archivo Windows Bash para priorizar la ejecución de archivos .exe redundantes

Archivo Windows Bash para priorizar la ejecución de archivos .exe redundantes

Utilizo un administrador de contraseñas para todas mis contraseñas. El .exe preferido se ejecuta desde una unidad USB cifrada. Tengo una copia de seguridad en mi computadora portátil dentro de un contenedor VeraCrypt y otra alojada en un servidor.

Prefiero usar solo mi versión portátil a menos que la pierda o no tenga acceso a ella. En lugar de abrir manualmente el directorio y ejecutar el archivo .exe que quiero usar, me gustaría automatizar el proceso como:

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!")

Intenté ejecutar la lógica línea por línea en bash/cmd/PowerShell; esto funciona, pero requiere más trabajo que simplemente abrir los directorios. Luego comencé a escribir un script de shell para automatizar el proceso, pero rápidamente me di cuenta de que tendría que almacenar algunas de mis credenciales en texto sin formato, lo cual me gustaría evitar. No necesito ayuda para escribir el código; Después de buscar no puedo encontrar el mejor procedimiento para automatizar este proceso.

¿Qué tipo de método de ejecución (script de shell, programa C/Java) sería la forma más sencilla de automatizar este proceso sin exponer las credenciales a alguien que pueda obtener acceso al archivo?

Respuesta1

El siguiente archivo por lotes resolvió mis problemas, no deja ninguna ventana CMD bloqueada después y verifica que el proceso no se esté ejecutando y que la unidad ya esté montada.

Se puede utilizar la misma lógica para cualquier archivo que exista en varias ubicaciones. La única vez que una ventana CMD permanece abierta es si el proceso ya se está ejecutando.

Si no le interesa que le notifiquen sobre un proceso que ya se está ejecutando, elimine la :ProcessFoundsección y dirija la declaración condicional a 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

información relacionada