1. तो मैं वर्तमान में एक प्रोग्राम बना रहा हूं जो फाइलों को छुपाता है और इसे अन्य स्थानों पर ले जाता है, और फ़ाइल को पुनर्प्राप्त करने के लिए आपको पासवर्ड डालने की आवश्यकता होती है। लेकिन मुझे एक समस्या मिली जहां जब मैं केवल ENTER दबाता हूं और पासवर्ड नहीं डालता, तो बैच प्रोग्राम बंद हो जाता है। मैं इसे बनाना चाहता था ताकि जब आप ENTER दबाते हैं या पासवर्ड नहीं डालते हैं तो यह कहता है "कृपया पासवर्ड दर्ज करें!" जब तक वह जो चाहता था उसे प्राप्त नहीं कर लेता। (ईमानदारी से कहूं तो यह सिर्फ कुछ ऐसा है जिसे मैंने गुगल किया और पेस्ट कॉपी किया, और इसे थोड़ा बदल दिया)

  2. अतिरिक्त प्रश्न, क्या set /p something= के बजाय set /p "something=>" का उपयोग करना ठीक है

यहां वे आदेश और कोड हैं जिनका मैंने उपयोग किया था।

मुझे पता है कि यह जटिल है और लिखने के लिए सबसे बुरी बात हो सकती है।

@ECHO OFF
title unlock the stuff
if EXIST SecretCodes goto CONFIRM
if NOT EXIST SecretCodes goto CONFIRMATION

:CONFIRM
echo are you sure you want to Lock the stuff?(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 excuse me?
goto CONFIRM

:LOCK
move /-Y C:\Users\MyName\Desktop\SecretCodes C:\Users\MyName\AppData\Roaming\Hidden
attrib +H +S C:\Users\MyName\AppData\Roaming\Hidden\SecretCodes
echo Secret is locked!! o7
pause
goto END

:UNLOCK
title Unlock
echo Please enter the password!
set /p "pass=>" 
if NOT %pass%== passwordispassword goto FAIL
move /-Y C:\Users\MyName\AppData\Roaming\Hidden\SecretCodes C:\Users\MyName\Desktop
echo the secret has been revealed!
pause
goto END

:FAIL
title Unlock
set /p "pass=>"
if NOT %pass%== passwordispassword goto END 
move /-Y C:\Users\MyName\AppData\Roaming\Hidden\SecretCodes C:\Users\MyName\Desktop
echo the secret has been revealed!
goto END

:CONFIRMATION
echo are you sure you want to Unlock the secrets?(Y/N)
set /p "choo=>"
if %choo%==Y goto UNHIDE
if %choo%==y goto UNHIDE
if %choo%==n goto END
if %choo%==N goto END
echo excuse me?
goto CONFIRMATION

:UNHIDE
attrib -H -S C:\Users\MyName\AppData\Roaming\Hidden\SecretCodes
goto UNLOCK

मेरे द्वारा लिखे गए कोड में चीजों को और अधिक स्पष्ट करने के लिए:

:CONFIRM 
echo are you sure you want to Lock the stuff?(Y/N) 
set /p "cho=>" 
if %cho%==Y go to LOCK 
if %cho%==y goto LOCK 
if %cho%==n goto END 
if %cho%==N goto END 
echo excuse me? 
goto CONFIRM 

, अगर मैं गलत इनपुट डालता हूं, उदाहरण के लिए मैं ई टाइप करता हूं और फिर दर्ज करता हूं तो मुझे कमांड दोहराएगा। यह कहेगा "क्षमा करें?" और फिर फिर से पूछना "क्या आप वाकई सामान लॉक करना चाहते हैं? (वाई/एन)", मुझे जो समस्या हो रही है वह यह है कि जब मैं कुछ भी नहीं डालता (तुरंत एंटर दबाएं ...) जब मैं इसमें कुछ नहीं डालता, तो cmd बंद हो जाएगा।

तो प्रश्न संख्या 1 पर वापस जा रहे हैं, क्या cmd को एंटर बटन दबाने से रोकने और इनपुट पर कोई पासवर्ड नहीं डालने का कोई तरीका है?

-1
Cloter Chohan 1 सितंबर 2019, 18:03

1 उत्तर

सबसे बढ़िया उत्तर

यह अनुकूलित बैच फ़ाइल कोड आपके द्वारा अपेक्षित रूप से काम करना चाहिए।

@echo off
setlocal EnableExtensions DisableDelayedExpansion
if not exist "%USERPROFILE%\Desktop\SecretCodes" goto PromptUnlock

:PromptLock
title Lock the stuff
%SystemRoot%\System32\choice.exe /C YN /N /M "Are you sure you want to LOCK the stuff? (Y/N)"
if errorlevel 2 goto EndBatch

move /-Y "%USERPROFILE%\Desktop\SecretCodes" "%APPDATA%\Hidden"
%SystemRoot%\System32\attrib.exe +H +S "%APPDATA%\Hidden\SecretCodes"
echo/
echo Secret is locked!! o7
echo/
pause
goto EndBatch

:PromptUnlock
title Unlock the stuff
%SystemRoot%\System32\choice.exe /C YN /N /M "Are you sure you want to UNLOCK the stuff? (Y/N)"
if errorlevel 2 goto EndBatch

%SystemRoot%\System32\attrib.exe -H -S "%APPDATA%\Hidden\SecretCodes"

:PromptPassword
set "pass="
set /P "pass=Please enter the password: "
rem Has the user entered a string at all?
if not defined pass goto PromptPassword
rem Remove all double quotes from entered password string for a safe
rem string comparison below. Password cannot contain character " at all.
set "pass=%pass:"=%"
if not "%pass%" == "passwordispassword" goto PromptPassword

move /-Y "%APPDATA%\Hidden\SecretCodes" "%USERPROFILE%\Desktop"
echo/
echo The secret has been revealed!
echo/
pause

:EndBatch
endlocal

प्रयुक्त कमांड को समझने के लिए और वे कैसे काम करते हैं, एक कमांड प्रॉम्प्ट विंडो खोलें, वहां निम्नलिखित कमांड निष्पादित करें, और प्रत्येक कमांड के लिए प्रदर्शित सभी सहायता पृष्ठों को पूरी तरह से पढ़ें।

  • choice /?
  • echo /?
  • endlocal /?
  • goto /?
  • if /?
  • move /?
  • pause /?
  • rem /?
  • set /?
  • setlocal /?
  • title /?

यह भी देखें: Windows कमांड दुभाषिया को गलत उपयोगकर्ता इनपुट पर बैच फ़ाइल निष्पादन को छोड़ने से कैसे रोकें?

1
Mofi 2 सितंबर 2019, 19:10