Código:
cls
@echo off
title LOCKEDFOLDER.exe
color 0a
echo.
echo ==============================================================================
echo LOCKEDFOLDER [Version 2.0.0]
echo ------------------------------------------------------------------------------
echo.
if EXIST TWlock goto UNLOCK
if NOT EXIST LOCKEDFOLDER goto MDLOCKER
:CONFIRM
set /p op=Seguro que quieres proteger la carpeta? (S/N):
if %op%==S goto LOCK
if %op%==s goto LOCK
if %op%==n goto END
if %op%==N goto END
echo.
echo Comando no valido
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto CONFIRM
:LOCK
ren LOCKEDFOLDER TWlock
attrib +h +s TWlock
echo.
echo Carpeta bloqueada
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:UNLOCK
Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Introduzca clave " -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")
FOR /F "delims=·" %%A IN (clave.txt) DO CALL:Tratar "%%A"
if %password%==%Reg% (goto Decrypt) else goto FAIL
:Decrypt
attrib -h -s TWlock
ren TWlock LOCKEDFOLDER
echo.
echo Carpeta desbloqueada
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:FAIL
echo.
echo Clave no valida
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:MDLOCKER
Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Establezca su clave de desbloqueo " -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")
echo %password% > clave.txt
attrib +h +s clave.txt
md LOCKEDFOLDER
echo.
echo Carpeta privada creada con exito
echo.
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:Tratar
rem aquí se procesa cada línea del archivo
SET Reg=%~1
GOTO:EOF
:End
con el código de arriba funciona bien pero, quise poner una linea más para confirmar contraseña, es decir, debería aparecer así:
Establezca su clave de desbloqueo: **********
Confirme su clave de desbloqueo: **********
Si coinciden crea la carpeta si no coinciden lo regresa, para eso modifique así:
Código:
cls
@echo off
title LOCKEDFOLDER.exe
color 0a
echo.
echo ==============================================================================
echo LOCKEDFOLDER [Version 2.0.1]
echo ------------------------------------------------------------------------------
echo.
if EXIST TWlock goto UNLOCK
if NOT EXIST LOCKEDFOLDER goto MDLOCKER
:CONFIRM
set /p op=Seguro que quieres proteger la carpeta? (S/N):
if %op%==S goto LOCK
if %op%==s goto LOCK
if %op%==n goto END
if %op%==N goto END
echo.
echo Comando no valido
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto CONFIRM
:LOCK
ren LOCKEDFOLDER TWlock
attrib +h +s TWlock
echo.
echo Carpeta bloqueada
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:UNLOCK
Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Introduzca clave " -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")
FOR /F "delims=·" %%A IN (clave.txt) DO CALL:LEER "%%A"
if %password%==%Reg% (goto Decrypt) else goto FAIL
:Decrypt
attrib -h -s TWlock
ren TWlock LOCKEDFOLDER
echo.
echo Carpeta desbloqueada
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:FAIL
echo.
echo Clave no valida
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:MDLOCKER
Set "tmpFile=%TEMP%\password.txt"
PowerShell.exe -Command $pword = read-host "Establezca su clave de desbloqueo (Por favor no olvide su clave, no hay forma de recuperarla) " -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password=<"%tmpFile%") & (Del /Q "%tmpFile%")
Set "tmpFile=%TEMP%\password2.txt"
PowerShell.exe -Command $pword2 = read-host "Confirme su clave de desbloqueo " -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > "%tmpFile%"
(Set /P password2=<"%tmpFile%") & (Del /Q "%tmpFile%")
if %password%==%password2% (goto CREAR) else goto DIFERENTES
:CREAR
echo %password% > clave.txt
attrib +h +s clave.txt
md LOCKEDFOLDER
echo.
echo Carpeta privada creada con exito
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:DIFERENTES
echo.
echo Las claves no coinciden
echo.
echo ^< Presione una tecla para finalizar ^>
pause >nul
goto End
:LEER
SET Reg=%~1
GOTO:EOF
:End
El problema con este código es que al ejecutarlo al primera vez siempre en lugar de pedir que establezca la contraseña me manda a confirmar, podrian ayudarme a ver que esta mal, gracias