cls
@ECHO OFF
title Folder Secure
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Secure goto MDLOCKER
:CONFIRM
echo (Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Invalid choice.
goto CONFIRM
:LOCK
ren Secure "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
set/p "variable=>"
if NOT %variable%== (Here is Enter Your Password) goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Secure
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDLOCKER
md Secure
echo Secure created successfully
goto End
:End
Вот мой код эха, который предназначен для скрытия папки с помощью команды y/n и unhide с использованием пароля. он работает правильно, по моему мнению, нет ошибки.В пакетном файле, как маскировать ввод со звездочкой * используя Powershell?
Но проблема в том, что мне нужен командный файл для маскировки входного текста с помощью *.
и я нашел его на:
http://stackoverflow.com/questions/22942383/batch-file-to-mask-input-with-without-an-external-file
Вот способ сделать это с помощью Powershell в пакетном файле Мэтт Уильямсон
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%pass
После этого Чудесная решение, которое прекрасно работает маскировать мой текст. , но после некоторой модификации я не могу понять, куда положить свой пароль?
Кто-то мне помогает !! где я могу поместить свой пароль в пакетный файл?
Вот окончательный код:
cls
@ECHO OFF
title Folder Secure
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Secure goto MDLOCKER
:CONFIRM
echo (Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Invalid choice.
goto CONFIRM
:LOCK
ren Secure "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ;^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword);^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%pass
if NOT %pass%== folder goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Secure
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDLOCKER
md Secure
echo Secure created successfully
goto End
:End
Но он не принял мой пароль. У меня нет знаний о Powershell !! вот почему мне нужна помощь!
извините за мой плохой английский С наилучшими пожеланиями: Али Хайдер Thanku Все :)
Изменить 'do set password = %% pass' на' do set pass = %% p' –
Вы понимаете, что это вообще не обеспечивает никакой безопасности, не так ли? –
@AliHyder Почему вы изобретаете колесо? См. [Что такое пакетный эквивалент Windows для типа ввода HTML = «пароль»?] (Http://stackoverflow.com/questions/286871/) Также см. Также [Скрыть ввод в пакетном файле] (http: // stackoverflow. com/questions/5852759 /) и [Могу ли я маскировать входной текст в файле bat?] (http://stackoverflow.com/questions/664957/) – Mofi