[APORTE] [BATCH] Automatizar apertura de volumen y baúl cifrado v2.2

Iniciado por cyberalejo17, 19 Abril 2014, 23:14 PM

0 Miembros y 1 Visitante están viendo este tema.

cyberalejo17

Buenas tardes,

Les quiero compartir un script que desarrollé hace poco. Se trata de una pequeña aplicación que automatiza la tarea de montar un volumen cifrado de TrueCrypt (permite seleccionar si se desea montar en modo sólo lectura o no), y abrir un baúl de contraseñas de KeePass almacenado dentro de ese volumen cifrado.

Modifico el post, para publicar la actualización del script. La versión 2.2.


Código (dos) [Seleccionar]

@ECHO OFF
:: Name: Abrir_USB.cmd
:: Author: CyberAlejo17
:: Description: Script para abrir una memoria USB cifrada y un baul de contrasennias.
:: Version: 2.2
:: Tree:
::     F:\
::     |   Abrir_USB.cmd
::     |  
::     +---PENDRIVE
::     \---TC
::         |   CYBERALEJO17-TC.tc
::         |   truecrypt-x64.sys
::         |   TrueCrypt.exe
::         |   truecrypt.sys
::         |  
::         \---setup
::                 TrueCrypt Setup 7.1a.exe
::     T:\
::     |  
::     +---PERSONAL
::     |   \---Seguridad
::     |       |   PasswdDatabase.kdbx
::     |       |  
::     |       \---Software
::     |           |   KeePass.chm
::     |           |   KeePass.config.xml
::     |           |   KeePass.exe
::     |           |   KeePass.XmlSerializers.dll
::     |           |   KeePassLibC32.dll
::     |           |   KeePassLibC64.dll
::     |           |   ShInstUtil.exe
::     |           |  
::     |           \---XSL
::     |                   KDBX_DetailsFull.xsl
::     |                   KDBX_DetailsLite.xsl
::     |                   KDBX_PasswordsOnly.xsl
::     |                   KDBX_Styles.css
::     |                   KDBX_Tabular.xsl
::     |                   TableHeader.gif
::     |                  
::     \---UNIVERSIDAD
::         \---Cursos 2014-1
::                 CALIFICACIONES-TC.tc



REM =========
REM VARIABLES
REM =========

:: Ruta de la aplicacion TrueCrypt.
set rutaTC=TC\TrueCrypt.exe
if exist "%programfiles%\TrueCrypt\TrueCrypt.exe" set rutaTC=%programfiles%\TrueCrypt\TrueCrypt.exe
:: Letra que va a tomar la unidad Principal.
set letraTC=T
:: Letra que va a tomar la unidad Calificaciones.
set letraCal=U
:: Ruta de la aplicacion KeePass dentro de la unidad Principal.
set rutaKP=PERSONAL\Seguridad\Software\KeePass.exe
:: Ruta del archivo cifrado de la unidad Principal.
set rutaArchivoTC=TC\CYBERALEJO17-TC.tc
:: Ruta del archivo cifrado de la unidad Calificaciones.
set rutaArchivoCal=UNIVERSIDAD\Cursos 2014-1\CALIFICACIONES-TC.tc
:: Ruta del baul de contrasennias.
set rutaArchvoKP=PERSONAL\Seguridad\PasswdDatabase.kdbx


REM ======
REM INICIO
REM ======

:: Nos lleva a la seleccion del menu adecuado.
goto :VERIFICACION




REM ==============
REM CODIGO GRAFICO
REM ==============


REM =====
REM Menus
REM =====

:MENU_1:: Menu inicial. Es posible montar las unidades y abrir el baul.
cls
COLOR 07
MODE CON COLS=85 LINES=26
TITLE Abrir USB
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º                                   Abrir USB                                    º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º                             º                                                  º
echo  º TC Principal                º                                                  º
echo  º  1) S¢lo lectura úúúúúúúúúúúº Monta la unidad principal en modo RO             º
echo  º  2) Escritura úúúúúúúúúúúúúúº Monta la unidad principal en modo RW             º
echo  º                             º                                                  º
echo  º TC Calificaciones           º                                                  º
echo  º  3) S¢lo lectura úúúúúúúúúúúº Monta la unidad principal en modo RW y la unidad º
echo  º                             º   calificaciones el modo RO                      º
echo  º  4) Escritura úúúúúúúúúúúúúúº Monta la unidad principal en modo RW y la unidad º
echo  º                             º   calificaciones el modo RW                      º
echo  º                             º                                                  º
echo  º Ba£l                        º                                                  º
echo  º  5) Abrir ba£l úúúúúúúúúúúúúº Monta la unidad principal en modo RW e inicia el º
echo  º                             º   ba£l de contrase¤as                            º
echo  º                             º                                                  º
echo  º Extras                      º                                                  º
echo  º  6) Mostrar archivos ocultosº Mostrar las carpetas ocultas en la memoria       º
echo  º                             º                                                  º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :EOF

:MENU_2:: Ya ha sido montada la unidad Principal. Permite montar la unidad Calificaciones, abrir el baul y desmontar unidades.
cls
COLOR 07
MODE CON COLS=85 LINES=23
TITLE Abrir USB
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º                                   Abrir USB                                    º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º                             º                                                  º
echo  º TC Calificaciones           º                                                  º
echo  º  1) S¢lo lectura úúúúúúúúúúúº Monta la unidad calificaciones en modo RO        º
echo  º  2) Escritura úúúúúúúúúúúúúúº Monta la unidad calificaciones en modo RW        º
echo  º                             º   (no garantiza RW)                              º
echo  º                             º                                                  º
echo  º Ba£l                        º                                                  º
echo  º  3) Abrir ba£l úúúúúúúúúúúúúº Inicia el ba£l de contrase¤as (no garantiza RW)  º
echo  º                             º                                                  º
echo  º Cierre                      º                                                  º
echo  º  4) Desmontar unidad %letraTC% úúúúúº Desmonta la unidad Principal                     º
echo  º                             º                                                  º
echo  º Extras                      º                                                  º
echo  º  5) Mostrar archivos ocultosº Mostrar las carpetas ocultas en la memoria       º
echo  º                             º                                                  º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :EOF

:MENU_3:: Ya ha sido montada la unidad Principal y abierto el baul. Permite montar la unidad Calificaciones, desmontar unidades y cerrar todo.
cls
COLOR 07
MODE CON COLS=85 LINES=21
TITLE Abrir USB
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º                                   Abrir USB                                    º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º                             º                                                  º
echo  º TC Calificaciones           º                                                  º
echo  º  1) S¢lo lectura úúúúúúúúúúúº Monta la unidad calificaciones en modo RO        º
echo  º  2) Escritura úúúúúúúúúúúúúúº Monta la unidad calificaciones en modo RW        º
echo  º                             º   (no garantiza RW)                              º
echo  º                             º                                                  º
echo  º Cierre                      º                                                  º
echo  º  3) Cerrar ba£l úúúúúúúúúúúúº Cierra todos los ba£les                          º
echo  º  4) Cerrar y desmontar todo º Cierra los ba£les y desmonta todas las unidades  º
echo  º                             º                                                  º
echo  º Extras                      º                                                  º
echo  º  5) Mostrar archivos ocultosº Mostrar las carpetas ocultas en la memoria       º
echo  º                             º                                                  º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :EOF

:MENU_4:: Ya ha sido montada la unidad Principal y Calificaciones. Permite abrir el baul y desmontar unidades.
cls
COLOR 07
MODE CON COLS=85 LINES=19
TITLE Abrir USB
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º                                   Abrir USB                                    º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º                             º                                                  º
echo  º Ba£l                        º                                                  º
echo  º  1) Abrir ba£l úúúúúúúúúúúúúº Inicia el ba£l de contrase¤as (no garantiza RW)  º
echo  º                             º                                                  º
echo  º Cierre                      º                                                  º
echo  º  2) Desmontar unidad %letraCal% úúúúúº Desmonta la unidad Calificaciones                º
echo  º  3) Desmontar unidades úúúúúº Desmonta todas las unidades montadas previamente º
echo  º                             º                                                  º
echo  º Extras                      º                                                  º
echo  º  4) Mostrar archivos ocultosº Mostrar las carpetas ocultas en la memoria       º
echo  º                             º                                                  º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :EOF

:MENU_5:: Se ha montado la unidad Principal, Calificaciones y abierto el baul. Menu con las opciones para cerrar baul y desmontar unidades.
cls
COLOR 07
MODE CON COLS=85 LINES=18
TITLE Abrir USB
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º                                   Abrir USB                                    º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º                             º                                                  º
echo  º Cierre                      º                                                  º
echo  º  1) Cerrar ba£l úúúúúúúúúúúúº Cierra todos los ba£les                          º
echo  º  2) Cerrar y desmontar %letraCal%    º Cierra el ba£l y desmonta la unidad              º
echo  º                             º   Calificaciones                                 º
echo  º  3) Cerrar y desmontar todo º Cierra los ba£les y desmonta todas las unidades  º
echo  º                             º                                                  º
echo  º Extras                      º                                                  º
echo  º  4) Mostrar archivos ocultosº Mostrar las carpetas ocultas en la memoria       º
echo  º                             º                                                  º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :EOF

:MENU_6:: Advierte del preligro de la ejecucion de attrib.
cls
COLOR 4E
MODE CON COLS=85 LINES=25
TITLE=Mostrar archivos y carpetas ocultas
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º                            Mostrar archivos ocultos                            º
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo  º                             º                                                  º
echo  º             +*+             º                                                  º
echo  º            +* *+            º                                                  º
echo  º           +*   *+           º                                                  º
echo  º          +* **  *+          º         ¨Desea proceder con la operaci¢n?        º
echo  º         +*  **   *+         º                                                  º
echo  º        +*   **    *+        º                                                  º
echo  º       +*     *     *+       º                                                  º
echo  º      +*             *+      º                     Escriba:                     º
echo  º     +*       **      *+     º                                                  º
echo  º    +*        **       *+    º                                                  º
echo  º   +*                   *+   º                                                  º
echo  º   ***********************   º                                                  º
echo  º    + + + + + + + + + + +    º                        OK                        º
echo  º                             º                                                  º
echo  º    A D V E R T E N C I A    º                                                  º
echo  º                             º                                                  º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto :EOF


REM ========
REM Mensajes
REM ========

:MENSAJE_1:: Mensaje de espera a que se termine de montar el contenedor.
cls
COLOR 07
MODE CON COLS=40 LINES=5
TITLE Espere...
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º     Esperando al contenedor...     º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF

:MENSAJE_2:: Mensaje indicando el proceso de cierre del baul de contrasennias.
cls
COLOR 07
MODE CON COLS=40 LINES=5
TITLE Cerrando...
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º          Cerrando ba£l...          º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF

:MENSAJE_3:: Mensaje indicando el proceso de desmonte de la unidad Calificaciones.
cls
COLOR 07
MODE CON COLS=40 LINES=5
TITLE Desmontando...
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º      Desmontando unidad %letraCal%...       º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF

:MENSAJE_4:: Mensaje indicando el proceso de desmonte de la unidad Principal.
cls
COLOR 07
MODE CON COLS=40 LINES=5
TITLE Desmontando...
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º      Desmontando unidad %letraTC%...       º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF

:MENSAJE_5:: Mensaje de error
cls
COLOR 4E
MODE CON COLS=40 LINES=5
TITLE Error
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º               ERROR                º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF

:MENSAJE_6:: Mensaje indicando que no ha acabado el proceso de mostrar archivos ocultos.
cls
COLOR 07
MODE CON COLS=40 LINES=5
TITLE Espere...
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º        Espere por favor...         º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF

:MENSAJE_7:: Mensaje indicando que ha introducido una opción invalida.
cls
COLOR 07
MODE CON COLS=40 LINES=5
TITLE Error
echo.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º          Opci¢n inv lida           º
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
goto :EOF



REM ================
REM CODIGO PRINCIPAL
REM ================


REM ========
REM Opciones
REM ========

:VERIFICACION:: Verifica si ya se monto la unidad, mostrando el menu correspondiente.
if exist "%letraTC%:/" (
if exist "%letraCal%:/" (
TASKLIST | FIND /I "KeePass.exe">nul && goto :OPCIONES_5 || goto :OPCIONES_4)
TASKLIST | FIND /I "KeePass.exe">nul && goto :OPCIONES_3 || goto :OPCIONES_2) else (goto :OPCIONES_1)

:OPCIONES_1
call :MENU_1
set var=1
set /p var= Seleccione una opci¢n (1-6) [1]:
if %var%==1 (goto :MONTAR_RO)
if %var%==2 (goto :MONTAR_RW)
if %var%==3 (call :MONTAR_RW && goto :MONTAR_CAL_RO)
if %var%==4 (call :MONTAR_RW && goto :MONTAR_CAL_RW)
if %var%==5 (call :MONTAR_RW && goto :ABRIR_BAUL)
if %var%==6 (goto :OPCIONES_6)
call :MENSAJE_7
timeout 1 >nul
goto :OPCIONES_1

:OPCIONES_2
call :MENU_2
set var=4
set /p var= Seleccione una opci¢n (1-5) [4]:
if %var%==1 (goto :MONTAR_CAL_RO)
if %var%==2 (goto :MONTAR_CAL_RW)
if %var%==3 (goto :ABRIR_BAUL)
if %var%==4 (goto :DESMONTAR_UNIDAD_PPL)
if %var%==5 (goto :OPCIONES_6)
call :MENSAJE_7
timeout 1 >nul
goto :OPCIONES_2

:OPCIONES_3
call :MENU_3
set var=4
set /p var= Seleccione una opci¢n (1-5) [4]:
if %var%==1 (goto :MONTAR_CAL_RO)
if %var%==2 (goto :MONTAR_CAL_RW)
if %var%==3 (goto :CERRAR_BAUL)
if %var%==4 (call :CERRAR_BAUL && goto :DESMONTAR_UNIDAD_PPL)
if %var%==5 (goto :OPCIONES_6)
call :MENSAJE_7
timeout 1 >nul
goto :OPCIONES_3

:OPCIONES_4
call :MENU_4
set var=3
set /p var= Seleccione una opci¢n (1-4) [3]:
if %var%==1 (goto :ABRIR_BAUL)
if %var%==2 (goto :DESMONTAR_UNIDAD_CAL)
if %var%==3 (call :DESMONTAR_UNIDAD_CAL && goto :DESMONTAR_UNIDAD_PPL)
if %var%==4 (goto :OPCIONES_6)
call :MENSAJE_7
timeout 1 >nul
goto :OPCIONES_4

:OPCIONES_5
call :MENU_5
set var=3
set /p var= Seleccione una opci¢n (1-4) [3]:
if %var%==1 (goto :CERRAR_BAUL)
if %var%==2 (call :CERRAR_BAUL && goto :DESMONTAR_UNIDAD_CAL)
if %var%==3 (call :CERRAR_BAUL && call :DESMONTAR_UNIDAD_CAL && goto :DESMONTAR_UNIDAD_PPL)
if %var%==4 (goto :OPCIONES_6)
call :MENSAJE_7
timeout 1 >nul
goto :OPCIONES_5

:OPCIONES_6
call :MENU_6
set proceder=DESISTIR
set /p proceder= Por favor, confirme:
if %proceder%==OK (goto :MOSTRAR_OCULTOS)
goto :VERIFICACION



REM ========
REM Acciones
REM ========

:MONTAR_RO:: Montar unidad en solo lectura.
START "Montar unidad RO" "%rutaTC%" /q background /l%letraTC% /e /m ro /m rm /v "%rutaArchivoTC%"
goto :EOF

:MONTAR_RW:: Montar unidad en modo escritura.
START "Montar unidad RW" "%rutaTC%" /q background /l%letraTC% /e /m rm /v "%rutaArchivoTC%"
goto :EOF

:MONTAR_CAL_RO:: Montar unidad calificaciones en solo lectura.
call :MENSAJE_1
timeout 1 >nul
if not exist "%letraTC%:" (goto :MONTAR_CAL_RO)
START "Montar unidad calificaciones RO" "%rutaTC%" /q background /l%letraCal% /e /m ro /m rm /v "%letraTC%:\%rutaArchivoCal%"
goto :EOF

:MONTAR_CAL_RW:: Montar unidad calificaciones en modo escritura.
call :MENSAJE_1
timeout 1 >nul
if not exist "%letraTC%:" (goto :MONTAR_CAL_RW)
START "Montar unidad calificaciones RW" "%rutaTC%" /q background /l%letraCal% /e /m rm /v "%letraTC%:\%rutaArchivoCal%"
goto :EOF

:ABRIR_BAUL:: Abrir el baul de contrasennias.
call :MENSAJE_1
timeout 1 >nul
if not exist "%letraTC%:" (goto :ABRIR_BAUL)
START "Cerrar baul" "%letraTC%:\%rutaKP%" --exit-all
START "Abrir baul" "%letraTC%:\%rutaKP%" "%letraTC%:\%rutaArchvoKP%"
goto :EOF

:CERRAR_BAUL:: Cierra solo el baul de contrasennias
TASKLIST | FIND /I "KeePass.exe">nul
if %errorlevel%==0 (
call :MENSAJE_2
START "Cerrar baul" "%letraTC%:\%rutaKP%" --exit-all
timeout 2 >nul
)
goto :EOF

:DESMONTAR_UNIDAD_CAL:: Desmonta la unidad Calificaciones.
call :MENSAJE_3
if exist "%letraCal%:/" ("%rutaTC%" /d%letraCal% /s /q && timeout 2 >nul)
if exist "%letraCal%:/" (
call :MENSAJE_5
timeout 1 >nul
exit
)
goto :EOF

:DESMONTAR_UNIDAD_PPL:: Desmonta la unidad Principal.
call :MENSAJE_4
"%rutaTC%" /d%letraTC% /s /q && timeout 1 >nul
if exist "%letraTC%:/" (
call :MENSAJE_5
timeout 1 >nul
exit
)
goto :EOF

:MOSTRAR_OCULTOS:: Muestra los archivos ocultos de la memoria usb.
call :MENSAJE_6
attrib /s /d -r -a -h -s
exit



Pueden descargar el script y unos archivos de ejemplo para que vean su funcionamiento en:
https://mega.co.nz/#!I8RU0LwY!3L4aWlIuCZbsMAYM1OsNvXdZmwRZUQfxG_zdypro7Dk
La contraseña para el volumen y el baúl es: 12345


Algunas imágenes:








Espero que les pueda resultar útil.


PD.

Agradezco a @Elektro por las pruebas y consejos.

cyberalejo17

#1
Me gustaría que lo probaran y que me dieran sus opiniones al respecto. Por favor.

Qué sería aconsejable modificar para que quedara mejor (más rápido, más fácil de entender, etc).

En la versión que les compartí faltan los comentarios de las opciones del menú, pero en la versión que tengo en mi memoria usb, ya aparecen.

El archivo CYBERALEJO17-TC.tc que es el contenedor Principal, me ocupa la totalidad menos una giga de mi memoria. Es decir, si es una de 8 GB, ese archivo tendrá un tamaño de 7 GB. Hago esto para dejar algo de espacio libre para almacenar por fuera de la partición cifrada (carpeta PENDRIVE).

El otro contenedor, donde están las calificaciones de los estudiantes, no pesa mas de 2 MB.

Eleкtro

Las modificaciones que hiciste son excelentes, no se puede mejorar mucho más.

Pero los menus:
Citar
Código (DOS) [Seleccionar]

:OPCIONES_1
call :MENU_1
set var=1
set /p var= Seleccione una opci¢n (1-6) [1]:
if %var%==1 (goto :MONTAR_RO)
if %var%==2 (goto :MONTAR_RW)
if %var%==3 (call :MONTAR_RW && goto :MONTAR_CAL_RO)
if %var%==4 (call :MONTAR_RW && goto :MONTAR_CAL_RW)
if %var%==5 (call :MONTAR_RW && goto :ABRIR_BAUL)
if %var%==6 (goto :OPCIONES_6)
call :MENSAJE_7
timeout 1 >nul
goto :OPCIONES_1

Podrías hacerlos dinámicos:
(código corregido)
:OPCIONES_1
Call :MENU_1
Set "Options={Goto :MONTAR_RO}; {Goto :MONTAR_RW}; {Call :MONTAR_RW,Goto :MONTAR_CAL_RO}; {Call :MONTAR_RW,Goto :MONTAR_CAL_RW}; {Call :MONTAR_RW,Goto :ABRIR_BAUL}; {Goto :OPCIONES_6}"
Choice.exe /C "123456" /M "Seleccione una opci¢n (1-6) [1]"
For /F "Tokens=%ErrorLevel%,* Delims=;" %%# In ('Echo "%Options%"') Do (
For /F "Tokens=2-3 Delims={,}" %%X In ('Echo "%%~#"') Do ((%%~X) && (%%~Y))
)
Call :MENSAJE_7
Timeout.exe 1 1>Nul
Goto :OPCIONES_1

REM Esto lo puse solo para testear la llamada a las etiquetas...
:MONTAR_RO
Echo MONTAR_RO
Pause&Exit

:MONTAR_RW
Echo MONTAR_RW
Exit /B 0 & REM Aquí usas un Call para llamar a este bloque, así que debes indicar un código de salida (0|1).

:MONTAR_CAL_RO
Echo MONTAR_CAL_RO
Pause&Exit

( Un pobre intento de simular un Array seteando una cadena delimitada, y poder simular también un índice de elementos del Array para poder acceder a un elemento indicando el índice con lo único que nos proporciona Batch para hacer algo semejante ...un For. )

EDITO: Añado otra solución alternativa, más simple:

SetLocal EnableDelayedExpansion & REM Necesario para expandir la(s) variable(s).

:OPCIONES_1
Call :MENU_1

Set "Choice1=Goto :MONTAR_RO"
Set "Choice2=Goto :MONTAR_RW"
Set "Choice3=Call :MONTAR_RW;Goto :MONTAR_CAL_RO"
Set "Choice4=Call :MONTAR_RW;Goto :MONTAR_CAL_RW"
Set "Choice5=Call :MONTAR_RW;Goto :ABRIR_BAUL"
Set "Choice6=Goto :OPCIONES_6"

Choice.exe /C "123456" /M "Seleccione una opci¢n (1-6) [1]"
Set /A "ChoiceIndex=%ErrorLevel%"
For /F "Tokens=1-2 Delims=;" %%X In ('Echo !Choice%ChoiceIndex%!') Do ((%%~X) && (%%~Y))

SetLocal DisableDelayedExpansion
Call :MENSAJE_7
Timeout.exe 1 1>Nul
Goto :OPCIONES_1







CitarQué sería aconsejable modificar para que quedara mejor (más rápido).
Para que sea más rápido debes utilizar otro lenguaje distinto, si en algo destaca Batch es por su incompetencia y lentitud.

Por ejemplo, en Batch debes usar una aplicación externa (Find.exe|Findstr.exe) para buscar patrones de cadenas en otra cadena (la salida de un comando), depender de la ejecucion y del tiempo de ejecución de otro exe y del código de salida que este mande para determinar que se encontró una cadena y/o una expresion regular ...eso ya de por si es una mier-da y es muy lento en comparación con cualquier otro lenguaje.

Además, también dependes de otras aplicaciones como 'TaskList.exe', el cual no muestra una lista de procesos en Tiempo Real, por propia experiencia te puedo decir que a veces el comando tiene una demora de 10-15 segundos en actualizar la lista de procesos para mostrar el proceso que andas buscando, así que para obtener mayor eficacia en Batch podrías hacer una Query a las Classes de WMI utilizando (de nuevo) una aplicación externa, WMIC:

Ej:
( WMIC.exe Process Where Name='KeyPass.exe' Get /Format:List | Find.exe "=" )1>NUL 2>&1 && (...) || (...)

...en cualquier otro lenguaje no necesitarías depender de ningún exe para verificar si un proceso está corriendo, podrías usar las Classes de WMI diréctamente, lo cual es más rápido sin duda.

Como ya digo, tu Batch-Script no se puede mejorar mucho más, así está perfecto aunque le hagas alguna que otra pequeña modificación como las que he comentado.

¡Saludos!








cyberalejo17

#3
Muchas gracias!

Lo que comentas por el momento es desconocido para mi, así que ya tengo tarea.

De nuevo, gracias.


EDITO:
Una pregunta, cambiando los menús por choise, todavía conservo la particularidad de la opción por defecto? que es lo que está como [1] en las opciones. Es decir, que no necesito escribir una opción (1-6), sino con sólo dar enter, sin haber introducido un número, se va a esa opción.

Se me ocurrió una nueva modificación, añadir la opción de extraer de forma automática la memoria USB cuando termine de desmontar y cerrar todas las unidades cifradas.
Por ahora sólo he encontrado que puedo hacerlo con aplicaciones externas.
http://quickandeasysoftware.net/software/usb-disk-ejector
Utilizando el parámetro /REMOVETHIS

Eleкtro

Cita de: cyberalejo17 en  2 Mayo 2014, 22:19 PM
cambiando los menús por choise, todavía conservo la particularidad de la opción por defecto? que es lo que está como [1] en las opciones. Es decir, que no necesito escribir una opción (1-6), sino con sólo dar enter, sin haber introducido un número, se va a esa opción.

El comando Choice espera un UserInput (la interacción por parte del usuario) para seleccionar una opción entre las opciones que especificaste,
por lo tanto no hay lugar para predefinir una opción porque el comando obliga a que una de las opciones se deba elegir...
...a menos que especifiques un tiempo de espera máximo y entonces si que puedes especificar también la opción por defecto al terminar el tiempo de espera.

Lee la ayuda del comando.

Cita de: Choice.exe /?/T   tiempo de espera  Número de segundos de pausa antes de que se elija
                      una opción predeterminada. Los valores permitidos
                      están comprendidos entre 0 y 9999. Si se especifica
                      0, no habrá pausa y se seleccionará la opción
                      predeterminada.

  /D   opción            Especifica la opción predeterminada después de nnnn
                      segundos. Carácter debe estar en el conjunto
                      especificado de opciones por la opción /C y también
                      debe especificarse nnnn con /T.

Ejemplo:
Código (dos) [Seleccionar]
Choice.exe /C "123" /M "Elige" /T 10 /D "3"
(Echo %ErrorLevel%) & REM Resultado: '3'





Citar
añadir la opción de extraer de forma automática la memoria USB cuando termine de desmontar y cerrar todas las unidades cifradas.
Por ahora sólo he encontrado que puedo hacerlo con aplicaciones externas.

Nunca me he interesado por saber como "extraer" un dispositivo extraible de forma automatizada, pero si has encontrado un programa de terceros capaz de hacerlo eso significa que la API de Windows así se lo permite, así que debe haber alguna función en la WinAPI para hacerlo, desconozco cual ...pero la WinAPI olvídate de poder tocarla en Batch.

EDITO: Lo encontré: CM_Request_Device_Eject function + Info, de hecho según he leido en este source esa es la función que utiliza la aplicación 'USBEject' que mencionaste.
Es muchísimo más dificil de lo que parece en un principio, hay que usar drivers, si esta fuera la única solución entonces preferiría depender de ese tal "USBEject".

También se me ocurre que quizás en alguna Class (referente a los dispositivos extraibles y/o volúmenes) de WMI puedas invocar el comando (el cual desconozco el nombre, pero debería ser algo como "Eject/Extract") de ejecución del dispositivo (InvokeVerb("Eject")), eso sería más viable porque si encuentras información al respecto entonces puedes reproducirlo en Batch usando el comando WMIC.

EDITO: Encontré algo parecido, escrito en PowerShell:
Citar$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("E:").InvokeVerb("Eject")
Fuente: http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html

Y lo mismo para VBS:
Citar
Código (vb) [Seleccionar]
For Each d in CreateObject("Scripting.FileSystemObject").Drives
CreateObject("Shell.Application").Namespace(17).ParseName("E:\").InvokeVerb("Eject")
Next
Fuente: http://forums.mydigitallife.info/threads/29412-VBScript-Fast-eject-disk-on-drives

...Se supone que el comando "Eject" sirve tanto para ejecutar CD-Roms como para extraer unidades extraibles, se supone.

Y como última alternativa, con este comando puedes mostrar la ventana de extracción de dispositivos extraibles:
Código (dos) [Seleccionar]
rundll32.exe shell32.dll,Control_RunDLL hotplug.dll, @SystemDir

Saludos.