വേരിയബിളുകൾ ഉപയോഗിച്ച് സിഎംഡി. നീക്കം ചെയ്യാവുന്ന ഡ്രൈവിലേക്ക് അതേ ഡ്രൈവ് ലെറ്റർ അസൈൻ ചെയ്യുന്നു. അക്കങ്ങൾ പോലെ വേരിയബിളുകൾ ഉപയോഗിച്ചുള്ള പ്രവർത്തനങ്ങൾ

നിങ്ങളുടെ സ്വന്തം വേരിയബിളുകൾ പ്രഖ്യാപിക്കുന്നത് മിക്കവാറും ഏതൊരു പ്രോഗ്രാമിംഗ് ഭാഷയുടെയും അവിഭാജ്യ ഘടകമാണ്, അതിനാൽ vbscript ഭാഷയിൽ കീവേഡ് ഉപയോഗിച്ചാണ് അവ പ്രഖ്യാപിക്കുന്നത്. മങ്ങിയ, കൂടാതെ jscript-ൽ ഇത് ഉപയോഗിക്കുന്നു കീവേഡ് var.

വേരിയബിളുകൾ കമാൻഡ് ലൈൻവിൻഡോസ് അൽപ്പം വ്യത്യസ്തമാണ്; നിങ്ങൾക്ക് ഒരു കൂട്ടം cmd വേരിയബിളുകൾ പ്രഖ്യാപിക്കാനോ കമാൻഡ് ലൈനിൽ ഒരേസമയം നിരവധി വേരിയബിളുകൾക്ക് മൂല്യങ്ങൾ നൽകാനോ കഴിയില്ല. നമുക്ക് ഒന്ന് നോക്കാം അടുത്ത വരികൾകോഡ്:

echo % Var3% echo % VAR3% echo % vAr3%

പരിഗണിക്കേണ്ട ഒരു പോയിൻ്റ് റെക്കോർഡിംഗ് ആണ്

സെറ്റ് var1 =100
സെറ്റ് var1 = 100

ഇത് ഒരേ കാര്യമല്ല, അതായത്, ആദ്യ സന്ദർഭത്തിൽ നമ്മൾ cmd വേരിയബിൾ "var1" സൃഷ്ടിക്കുന്നു, രണ്ടാമത്തേതിൽ - "var1". മൂല്യങ്ങൾ അസൈൻ ചെയ്യുന്നതിനുള്ള സാഹചര്യം സമാനമാണ്, അതിനാൽ സ്ഥലത്തേക്ക് ശ്രദ്ധിക്കുക!!!

ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഒരു വേരിയബിളിൻ്റെ മൂല്യം പ്രദർശിപ്പിക്കാൻ കഴിയുമെന്ന് ഞങ്ങൾ കാണുന്നു എക്കോ, എന്നതിനായുള്ള "%" ചിഹ്നത്തിൽ ഞങ്ങൾ അത് ചേർക്കുന്നു സെറ്റ്- ഞങ്ങൾ അതിൻ്റെ പേര് എഴുതുന്നു; എല്ലാ വേരിയബിളുകൾക്കും ഒരു സ്ട്രിംഗ് തരം നൽകിയിരിക്കുന്നു എന്നതും പരിഗണിക്കേണ്ടതാണ്.

നിങ്ങൾ ഓടുകയാണെങ്കിൽ cmd കമാൻഡ്സെറ്റ്, എല്ലാ വേരിയബിളുകളും അവയുടെ മൂല്യങ്ങളും പട്ടികപ്പെടുത്തുന്നു നിലവിലെ സെഷൻ, പുതുതായി സൃഷ്ടിച്ചവയും അവിടെ ഉണ്ടായിരിക്കുമെന്ന് നിങ്ങൾ കാണും cmd വേരിയബിളുകൾഒപ്പം . മുഴുവൻ സെഷനിലുടനീളം ഞങ്ങൾക്ക് അവ ആക്സസ് ചെയ്യാൻ കഴിയും.

കമാൻഡ് ലൈനിലെ വേരിയബിളുകൾ മായ്ക്കാൻ വിൻഡോസ് ലൈൻഅവയുടെ ഉള്ളടക്കത്തിൽ നിന്ന്, നിങ്ങൾ ഒരു ശൂന്യമായ മൂല്യം നൽകേണ്ടതുണ്ട്:

%Var3% എന്ന വരിയും കമാൻഡും പ്രിൻ്റ് ചെയ്യും

IN ഈ ഉദാഹരണത്തിൽഞങ്ങൾ & കൂടാതെ ^ പ്രതീകങ്ങളിൽ നിന്ന് രക്ഷപ്പെട്ടു, അതുവഴി പദസമുച്ചയങ്ങൾ നൽകി:

"100 & 3 = 5"
"100 ^3"

ഈ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ ഉപയോഗിച്ച് ഞങ്ങൾ പ്രദർശിപ്പിക്കാൻ ശ്രമിക്കുകയാണെങ്കിൽ എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ് cmd പ്രവർത്തനങ്ങൾസജ്ജമാക്കുക, അപ്പോൾ പ്രശ്നങ്ങളൊന്നും ഉണ്ടാകില്ല, പക്ഷേ ഞങ്ങൾ എക്കോ ഫംഗ്ഷൻ ഉപയോഗിക്കുകയാണെങ്കിൽ, ഞങ്ങൾ പ്രതീക്ഷിച്ചതിലും തികച്ചും വ്യത്യസ്തമായ ഫലം ലഭിക്കും. അതിനാൽ, നിങ്ങൾ ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കാൻ ശ്രമിക്കുമ്പോൾ:

ഇപ്പോൾ കോഡ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ:

പ്രതിധ്വനി %var4% എക്കോ %var5%

എല്ലാം നന്നായി നടക്കും.

നിലവിലെ കമാൻഡ് ലൈൻ വിൻഡോയിൽ സൃഷ്ടിച്ച cmd വേരിയബിളുകൾ മറ്റ് പ്രോസസ്സുകൾക്ക് ലഭ്യമല്ല, എന്നാൽ ഇതിലും വലിയ നിയന്ത്രണങ്ങൾ സജ്ജമാക്കാൻ സാധിക്കും.

എന്ത് ചോദിക്കാൻ ലോക്കൽ ഏരിയദൃശ്യപരത, ബ്ലോക്ക് ഉപയോഗിക്കുന്നു സെറ്റ്‌ലോക്കൽ...എൻഡ്‌ലോക്കൽ. ഈ ബ്ലോക്കിൻ്റെ മധ്യത്തിൽ പ്രഖ്യാപിച്ചിരിക്കുന്ന എല്ലാ വിൻഡോസ് കമാൻഡ് ലൈൻ cmd വേരിയബിളുകളും അതിന് പുറത്ത് ദൃശ്യമാകില്ല. ഒരു എഡിറ്റർ തുറക്കുക (ഞാൻ എഡിറ്റർ ഉപയോഗിക്കുന്നു നോട്ട്പാഡ്++, അത് ഉടനടി കോഡ് ഹൈലൈറ്റ് ചെയ്യുന്നതിനാൽ), അതിൽ ഇനിപ്പറയുന്ന കോഡിൻ്റെ വരികൾ എഴുതുക:

ആദ്യം ഞങ്ങൾ var1 പ്രഖ്യാപിക്കുകയും അതിന് മൂല്യം 0 നൽകുകയും ചെയ്തു, തുടർന്ന് അതേ പേരിൽ ഞങ്ങൾ വീണ്ടും ഒരു വേരിയബിൾ പ്രഖ്യാപിച്ചു, പക്ഷേ ബ്ലോക്കിൽ സെറ്റ്‌ലോക്കൽ...എൻഡ്‌ലോക്കൽ. സ്ക്രിപ്റ്റ് ലോക്കൽ, ഗ്ലോബൽ var1 ൻ്റെ മൂല്യം ഔട്ട്പുട്ട് ചെയ്യുന്നു. ഞാൻ ലാറ്റിൻ അക്ഷരങ്ങൾ പ്രത്യേകമായി ഉപയോഗിച്ചതിനാൽ എന്തെങ്കിലും സംഭവിച്ചാൽ, നിങ്ങൾക്ക് കള്ളന്മാരെ ലഭിക്കില്ല.

ഈ ലേഖനത്തിൽ:

  • വേരിയബിളുകൾ നിർവചിക്കുന്നു
  • കമാൻഡ് ലൈൻ വേരിയബിളുകൾ (ബാറ്റ് ഫയൽ കോൾ പാരാമീറ്ററുകൾ)
  • IF സോപാധിക ഓപ്പറേറ്റർ
  • പ്രവർത്തനങ്ങൾ
  • റിട്ടേൺ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു (എക്സിറ്റ് കോഡ് പ്രോസസ്സ് ചെയ്യുന്നു)

വേരിയബിളുകൾ നിർവചിക്കുന്നു

സെറ്റ്<Имяпеременной>=<Значениепеременной>

പാരാമീറ്ററുകൾ കൈകാര്യം ചെയ്യാനുള്ള ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൻ്റെ കഴിവിൻ്റെ ഒരു വിപുലീകരണമാണ് SET പ്രസ്താവന. ശതമാനം ചിഹ്നങ്ങൾക്കിടയിൽ ആ പേര് ഉപയോഗിക്കുമ്പോഴെല്ലാം അതിൻ്റെ പേരിന് പകരം മൂല്യം വരുന്ന ഒരു വേരിയബിൾ ഇത് വ്യക്തമാക്കുന്നു. അതിനാൽ, സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ (പല ഗെയിമുകൾ ഉപയോഗിക്കുന്ന ഒരു വേരിയബിൾ സൌണ്ട് കാർഡ്കമ്പ്യൂട്ടർ):

SET BLASTER=A220 I5 D1 P330

ഒരു ബാച്ച് ഫയലിൽ ഇനിപ്പറയുന്ന നിർമ്മാണം ഉപയോഗിക്കുമ്പോൾ:

എക്കോ %ബ്ലാസ്റ്റർ%

"A220 I5 D1 P330" സ്ക്രീനിൽ പ്രദർശിപ്പിക്കും. SET സ്റ്റേറ്റ്‌മെൻ്റ് ഉപയോഗിച്ച് നിർവചിച്ചിരിക്കുന്ന വേരിയബിളുകളെ എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ എന്ന് വിളിക്കുന്നു, കൂടാതെ ഡോസ് പുനരാരംഭിക്കുന്നത് വരെ എക്‌സിക്യൂഷന് ശേഷം ദൃശ്യമാകും (മെമ്മറിയിൽ സ്വമേധയാ മാറ്റുന്നില്ലെങ്കിൽ). അതായത്, ഇത് ഒന്നിൽ നിന്ന് ഉപയോഗിക്കാം ബാച്ച് ഫയൽഅല്ലെങ്കിൽ മറ്റൊരു ടാസ്ക്കിന് ശേഷം പ്രോഗ്രാമുകൾ. ഏറ്റവും പ്രശസ്തമായത് PATH വേരിയബിളാണ്, ഇത് ഒരു കൂട്ടം പാതകളാണ് ദ്രുത തിരയൽഫയലുകൾ. ഇത് autoexec.bat ഫയലിൽ സജ്ജീകരിച്ചിരിക്കുന്നു.

കമാൻഡ് ലൈൻ വേരിയബിളുകൾ
(ബാറ്റ് ഫയൽ വിളിക്കുന്നതിനുള്ള പാരാമീറ്ററുകൾ)

%<цифра 0-9>

ഏത് ഭാഷയിലേയും പോലെ, ബാച്ച് ഫയൽ ഭാഷയിൽ ബാറ്റ് ഫയലിൻ്റെ പാരാമീറ്ററുകളായി ലഭിച്ച വേരിയബിളുകൾ ഉപയോഗിക്കാൻ കഴിയും.

ഒരേസമയം നിലവിലുള്ള 10 സ്വതന്ത്ര വേരിയബിളുകൾ ഉണ്ടാകാം. എഴുത്തിനായി സങ്കീർണ്ണമായ പ്രോഗ്രാമുകൾഇത് വളരെ ചെറുതാണെങ്കിലും പതിവ് ജോലിപലപ്പോഴും 3-4 മതി. വേരിയബിളിൻ്റെ മൂല്യം കമാൻഡ് ലൈനിൽ നിന്നുള്ള അനുബന്ധ പാരാമീറ്ററിൻ്റെ മൂല്യത്തിന് തുല്യമാണ്. %0 വേരിയബിളിൽ .bat ഫയലിൻ്റെ പേരും നിങ്ങൾ അത് വ്യക്തമാക്കിയാൽ അതിലേക്കുള്ള പാതയും അടങ്ങിയിരിക്കും. അതായത്, ഇനിപ്പറയുന്ന പാരാമീറ്ററുകൾ ഉപയോഗിച്ച് നിങ്ങൾ abc.bat ഫയൽ പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ:

abc.bat a bc def

അപ്പോൾ %0 എന്ന വേരിയബിളിൽ abc.bat എന്ന മൂല്യവും,% 1-ൽ a മൂല്യവും,%2-ൽ bc ഉം %3-ൽ def ഉം അടങ്ങിയിരിക്കും. ആവർത്തന പ്രവർത്തനങ്ങൾ കൈകാര്യം ചെയ്യുമ്പോൾ ബഹുമുഖ ബാച്ച് ഫയലുകൾ സൃഷ്ടിക്കാൻ ഈ പ്രോപ്പർട്ടി വ്യാപകമായി ഉപയോഗിക്കുന്നു.

കമാൻഡ് ലൈനിൽ നിന്ന് 10-ലധികം വേരിയബിളുകൾ ലഭിക്കുന്നതിന്, നിങ്ങൾക്ക് SHIFT കമാൻഡ് ഉപയോഗിക്കാം.

SHIFT കമാൻഡ് നിങ്ങളെ 10-ലധികം കമാൻഡ് ലൈൻ പാരാമീറ്ററുകൾ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു.എന്നിരുന്നാലും, മുമ്പത്തെ അനുബന്ധ പാരാമീറ്ററുകൾ നഷ്ടപ്പെട്ടു. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, SHIFT കമാൻഡ് എല്ലാ വേരിയബിൾ മൂല്യങ്ങളെയും ഒരു പടി ഇടത്തേക്ക് മാറ്റുന്നു. അതായത്, വേരിയബിളിൽ% 1-ൽ മുമ്പ് ഉണ്ടായിരുന്ന മൂല്യം വേരിയബിളിൽ അടങ്ങിയിരിക്കും, കൂടാതെ% 1-ൽ ഷിഫ്റ്റിന് മുമ്പുള്ള വേരിയബിളിൻ്റെ മൂല്യം% 2-ൻ്റെ മൂല്യവും അടങ്ങിയിരിക്കും. എന്നിരുന്നാലും, ഈ പ്രവർത്തനംമാറ്റാനാവാത്തതാണ്, അതായത്, വേരിയബിളുകൾ തിരികെ മാറ്റുന്നത് അസാധ്യമാണ്.

IF സോപാധിക ഓപ്പറേറ്റർ

ഭാഗ്യവശാൽ, കമാൻഡ് ഇൻ്റർപ്രെറ്റർ cmd.exe ആധുനിക വിൻഡോസ് 2000-ലും പിന്നീട് ബ്രാഞ്ചിംഗ് കൺസ്ട്രക്‌റ്റുകളിലെ കമാൻഡ് ബ്ലോക്കുകളെ പിന്തുണയ്‌ക്കുന്നു, ഇത് ലേബലുകളുള്ള IF-കൾ ഉപയോഗിക്കേണ്ടതിൻ്റെ ആവശ്യകത ഇല്ലാതാക്കുന്നു. കമാൻഡ് ബ്ലോക്കുകൾ പരാൻതീസിസിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. ഇത് ഇതുപോലെ കാണപ്പെടുന്നു (C/C++ ഇൻഡൻ്റേഷൻ ശൈലി അനുകരിക്കുന്നു):

വ്യവസ്ഥയാണെങ്കിൽ (

'അന്നത്തെ' ബ്രാഞ്ചിൻ്റെ റെം കമാൻഡുകൾ

റെം...

) വേറെ (

'മറ്റുള്ള' ബ്രാഞ്ചിൻ്റെ റെം കമാൻഡുകൾ

റെം...

പ്രത്യേക ഉദാഹരണംഉപയോഗിക്കുന്നു:

@എക്കോ ഓഫ്

BUILDMODE=%1 സജ്ജമാക്കുക

എങ്കിൽ "%BUILDMODE%" == "" (

എക്കോ പരാജയം: വാദം ആവശ്യമാണ് ^(--ഡീബഗ്, --റിലീസ്^)

പുറത്തുകടക്കുക / ബി 1

rem പ്രോസസ്സിംഗ് ലളിതമാക്കാൻ ആർഗ്യുമെൻ്റിൽ നിന്ന് എല്ലാ ഹൈഫനുകളും നീക്കം ചെയ്യുക

BUILDMODE=%BUILDMODE:-=% സജ്ജമാക്കുക

"%BUILDMODE%" == "ഡീബഗ്" ആണെങ്കിൽ (

CCFLAGS=/Od /MDd /Z7 സജ്ജമാക്കുക

) വേറെ (

CCFLAGS=/O2 /MD സജ്ജമാക്കുക

എൻ്റെ അഭിപ്രായത്തിൽ, ഇത് ജീവിക്കാൻ തികച്ചും സാദ്ധ്യമാണ്. പക്ഷേ, എല്ലായ്പ്പോഴും എന്നപോലെ, ജീവിതം തോന്നുന്നത്ര ലളിതമല്ല. ഒരു പ്രശ്നമുണ്ട്. അന്നും മറ്റുമുള്ള വേരിയബിളുകൾ ബ്ലോക്കുകൾ എക്‌സിക്യൂഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ് വിപുലീകരിക്കപ്പെടുന്നു, എക്‌സിക്യൂഷൻ സമയത്തല്ല. മുകളിലുള്ള ഉദാഹരണത്തിൽ, ഇത് ഒരു പ്രശ്‌നവും ഉണ്ടാക്കുന്നില്ല, എന്നാൽ ഇനിപ്പറയുന്നതിൽ ഇത് സംഭവിക്കും:

"%BUILDMODE%" == "ഡീബഗ്" ആണെങ്കിൽ (

എക്കോ വിവരം: ഡീബഗ് എൻവയോൺമെൻ്റ് മോഡ് സജ്ജീകരിക്കുന്നു

OPTFLAGS=/Od സജ്ജമാക്കുക

CCFLAGS=%OPTFLAGS% /MDd /Z7 സജ്ജമാക്കുക

) വേറെ (

എക്കോ വിവരം: പരിസ്ഥിതി റിലീസ് മോഡ് സജ്ജീകരിക്കുന്നു

OPTFLAGS=/O2 സജ്ജമാക്കുക

CCFLAGS=%OPTFLAGS% /MD സജ്ജമാക്കുക

രണ്ട് ബ്ലോക്കുകളിലും, OPTFLAGS വേരിയബിളിൻ്റെ പകരം വയ്ക്കൽ, ആ ബ്ലോക്കിൻ്റെ നിർവ്വഹണ സമയത്ത് അത് മാറ്റുന്നതിന് മുമ്പ് സംഭവിക്കും എന്നതാണ് ക്യാച്ച്. അതനുസരിച്ച്, ബ്ലോക്ക് ആരംഭിച്ചാൽ ഇതിൻ്റെ നിർവ്വഹണ സമയത്ത് OPTFLAGS-ന് ഉണ്ടായിരുന്ന മൂല്യം CCFLAGS-ൽ നിറയും.

വൈകിയ വേരിയബിൾ വിപുലീകരണം ഉപയോഗിച്ചാണ് ഈ പ്രശ്നം പരിഹരിക്കുന്നത്. ഇതിൽ അടങ്ങിയിരിക്കുന്ന വേരിയബിളുകൾ...! %...% എന്നതിനുപകരം, അവയുടെ അർത്ഥങ്ങൾ നേരിട്ട് ഉപയോഗിക്കുന്ന നിമിഷത്തിൽ മാത്രമേ വെളിപ്പെടുകയുള്ളൂ. ഈ മോഡ് ഡിഫോൾട്ടായി പ്രവർത്തനരഹിതമാണ്. cmd.exe-ലേക്ക് വിളിക്കുമ്പോൾ /V:ON സ്വിച്ച് ഉപയോഗിച്ചോ അല്ലെങ്കിൽ കമാൻഡ് ഉപയോഗിച്ചോ നിങ്ങൾക്ക് ഇത് പ്രവർത്തനക്ഷമമാക്കാം:

ബാറ്റ് ഫയലിൻ്റെ ടെക്സ്റ്റിൽ തന്നെ. രണ്ടാമത്തെ രീതി എനിക്ക് കൂടുതൽ സൗകര്യപ്രദമാണെന്ന് തോന്നുന്നു - ഒരു നിശ്ചിത പാരാമീറ്റർ ഉപയോഗിച്ച് നിങ്ങളുടെ സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കാൻ ആരെങ്കിലും ആവശ്യപ്പെടുന്നത് വളരെ രസകരമല്ല.

അങ്ങനെ പറഞ്ഞാൽ, മുമ്പത്തെ "തെറ്റായ" ഉദാഹരണം ഇതുപോലെ ശരിയാക്കാം:

setlocal enabledelayedexpansion

"%BUILDMODE%" == "ഡീബഗ്" ആണെങ്കിൽ (

എക്കോ വിവരം: ഡീബഗ് മോഡ് എൻവയോൺമെൻ്റ് സജ്ജീകരിക്കുന്നു

OPTFLAGS=/Od സജ്ജമാക്കുക

CCFLAGS=!OPTFLAGS സജ്ജമാക്കുക! /MDd /Z7

) വേറെ (

എക്കോ വിവരം: റിലീസ് മോഡ് എൻവയോൺമെൻ്റ് സജ്ജീകരിക്കുന്നു

OPTFLAGS=/O2 സജ്ജമാക്കുക

CCFLAGS=!OPTFLAGS സജ്ജമാക്കുക! /എം.ഡി

ഇപ്പോൾ ഇത് ഏതാണ്ട് പൂർണ്ണമായ ഒരു ബ്ലോക്കാണ്. മിക്കവാറും, കാരണം എക്കോ കമാൻഡുകളിലൊന്നിൽ നിങ്ങൾ ഒരു ക്ലോസിംഗ് പരാന്തീസിസ് നേരിടുന്നുണ്ടെങ്കിൽ, നിങ്ങൾ അത് ^ പ്രതീകം ഉപയോഗിച്ച് രക്ഷപ്പെടേണ്ടതുണ്ട്, അല്ലാത്തപക്ഷം പാഴ്സർ ആശയക്കുഴപ്പത്തിലാകും...

എന്നാൽ ഏത് സാഹചര്യത്തിലും, ഇത് ടാഗുകളുടെയും സംക്രമണങ്ങളുടെയും ഭ്രാന്തൻ എണ്ണത്തേക്കാൾ വളരെ മികച്ചതാണ്.

പ്രവർത്തനങ്ങൾ

ഒരു ബാറ്റ് ഫയലിൽ ഒരു ഫംഗ്ഷൻ സൃഷ്ടിക്കാൻ കഴിയുമോ? അതെ, നിങ്ങൾക്ക് കഴിയും. മാത്രമല്ല, ചിലപ്പോൾ അത് പോലും ആവശ്യമാണ്. ശരിയാണ്, ഇവയെ സോപാധികമായി ഫംഗ്ഷനുകൾ എന്ന് വിളിക്കാം.

കോൾ കമാൻഡിനായി ഒരു പ്രത്യേക വാക്യഘടനയുണ്ട്, അത് ഒരേ ബാറ്റ് ഫയലിലെ ഒരു മാർക്കിലേക്ക് പോകാൻ നിങ്ങളെ അനുവദിക്കുന്നു, ഈ കോൾ എവിടെ നിന്നാണ് വന്നതെന്ന് ഓർമ്മിക്കുക:

കോൾ: ലേബൽ ആർഗ്യുമെൻ്റുകൾ

കമാൻഡ് ഉപയോഗിച്ച് ഫംഗ്ഷൻ തിരികെ നൽകുന്നു:

പുറത്തുകടക്കുക /b [ഓപ്ഷണൽ റിട്ടേൺ കോഡ്]

/b കീ ഇവിടെ വളരെ പ്രധാനമാണ്: ഇത് കൂടാതെ, നിങ്ങൾ ഫംഗ്ഷനിൽ നിന്നല്ല, പൊതുവേ സ്ക്രിപ്റ്റിൽ നിന്ന് പുറത്തുകടക്കും.

വിശദാംശങ്ങൾക്ക്, കമാൻഡ് ലൈനിൽ ടൈപ്പ് ചെയ്യുക:

വിളി/?

പുറത്ത് /?

രസകരമെന്നു പറയട്ടെ, ഈ വാക്യഘടനയുള്ള കോൾ കമാൻഡ് പിന്തുണയ്ക്കുന്നു ആവർത്തന കോളുകൾകൂടെ യാന്ത്രിക സൃഷ്ടിവേരിയബിൾ ആർഗ്യുമെൻ്റുകൾക്കുള്ള പുതിയ ഫ്രെയിം %0-%9. ചിലപ്പോൾ ഇത് ഉപയോഗപ്രദമാകും. കമാൻഡ് ഭാഷയിലെ ആവർത്തന ഫാക്‌ടോറിയൽ കണക്കുകൂട്ടലിൻ്റെ ഒരു മികച്ച ഉദാഹരണം ഇതാ:

@എക്കോ ഓഫ്

വിളിക്കുക:ഘടകാംശം% 1

പ്രതിധ്വനി %RESULT%

പുറത്ത്

ഫാക്‌ടോറിയൽ മൂല്യം കണക്കാക്കുന്നതിനുള്ള rem ഫംഗ്‌ഷൻ

rem ലോഗിൻ:

rem% 1 നിങ്ങൾ ഫാക്‌ടോറിയൽ കണക്കാക്കാൻ ആഗ്രഹിക്കുന്ന നമ്പർ

rem ഔട്ട്പുട്ട്:

rem %RESULT% ഫാക്‌ടോറിയൽ മൂല്യം

:ഘടകാംശം

% 1 == 0 ആണെങ്കിൽ (

ഫലം=1 സജ്ജമാക്കുക

പുറത്തുകടക്കുക / ബി

% 1 == 1 ആണെങ്കിൽ (

ഫലം=1 സജ്ജമാക്കുക

പുറത്തുകടക്കുക / ബി

സജ്ജമാക്കുക /a PARAM=% 1 - 1

കോൾ:ഫാക്‌ടോറിയൽ %PARAM%

സജ്ജമാക്കുക /a ഫലം=%1 * %RESULT%

പുറത്തുകടക്കുക / ബി

ജോലിയുടെ ഉദാഹരണം:

> factorial.bat 10

3628800

റിട്ടേൺ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു
(പ്രോഗ്രാം എക്സിറ്റ് കോഡ് പ്രോസസ്സ് ചെയ്യുന്നു)

ഏതെങ്കിലും പ്രോഗ്രാം അതിൻ്റെ ജോലി പൂർത്തിയാക്കുമ്പോൾ, അത് അതിൻ്റെ ടെർമിനേഷൻ കോഡ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിലേക്ക് തിരികെ നൽകുന്നു. വിജയകരമായ പൂർത്തിയാകുമ്പോൾ പൂജ്യം തിരികെ നൽകുന്നത് പതിവാണ്, അല്ലാത്തപക്ഷം ഒരു പിശക് കോഡ്. ചിലപ്പോൾ, അല്ലെങ്കിൽ പലപ്പോഴും, ഒരു പ്രോഗ്രാം "മനപ്പൂർവ്വം" പൂജ്യമല്ലാത്ത മൂല്യം നൽകുന്നു, അതിലൂടെ അതിൻ്റെ പ്രവർത്തനത്തിൻ്റെ ചില വിശദാംശങ്ങൾ ബാച്ച് ഫയലിൽ "പഠിക്കാൻ" കഴിയും. ഉദാഹരണത്തിന്, പ്രോഗ്രാം അമർത്തിപ്പിടിച്ച കീയുടെ കോഡ് തിരികെ നൽകുന്നു, കൂടാതെ .bat ഫയൽ അതിനെ അടിസ്ഥാനമാക്കി വിവിധ പ്രവർത്തനങ്ങൾ ചെയ്യുന്നു.

എക്സിക്യൂട്ട് ചെയ്ത പ്രോഗ്രാമിൻ്റെ എക്സിറ്റ് കോഡ് ഒരു ബാച്ച് ഫയലിന് എങ്ങനെ കണ്ടെത്താനാകും? ഈ ആവശ്യത്തിനായി ERRORLEVEL കീ വേരിയബിൾ നൽകിയിരിക്കുന്നു.

പിശക് ലെവലുകളുള്ള ഒരു ബാച്ച് ഫയലിൻ്റെ ഉദാഹരണം:

@എക്കോ ഓഫ്

REM prg1.exe പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുക

PRG1.EXE

REM പൂർത്തീകരണ കോഡ് വിശകലനം

പിശക് ലെവൽ 2 ആണെങ്കിൽ, FILENOTFUND-ലേക്ക് പോകുക

പിശക് ലെവൽ 1 ആണെങ്കിൽ, റൈറ്ററിലേക്ക് പോകുക

പിശക് ലെവൽ 0 ആണെങ്കിൽ പുറത്തുകടക്കുക

GOTO ONEXIT

:ഫയൽ കണ്ടില്ല

ECHO പിശക്! ഫയൽ കണ്ടില്ല!

GOTO ONEXIT

:എഴുത്തുകാരൻ

ECHO റെക്കോർഡിംഗ് പിശക്!

GOTO ONEXIT

:എക്സിറ്റോക്ക്

ECHO പ്രോഗ്രാം വിജയകരമായി പൂർത്തിയാക്കി.

GOTO ONEXIT

:ONEXIT

എക്സിറ്റ് കോഡിൻ്റെ വിശകലനം പൂജ്യത്തിൽ നിന്നല്ല, സാധ്യമായ പരമാവധി മൂല്യത്തിൽ നിന്നാണ് ആരംഭിക്കുന്നതെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അത്തരമൊരു പരിശോധന അർത്ഥമാക്കുന്നത് വസ്തുതയാണ്: "പിശക് നില മൂല്യത്തേക്കാൾ വലുതോ തുല്യമോ ആണെങ്കിൽ ...". അതായത്, പൂജ്യത്തിൽ നിന്ന് ആരംഭിച്ച് പരിശോധിക്കുകയാണെങ്കിൽ, ആദ്യ വരിയിൽ ഏതെങ്കിലും മൂല്യം ശരിയാകും, അത് തെറ്റാണ്.

ഇത്തരത്തിലുള്ള പ്രോഗ്രാമുകളിലെ ഏറ്റവും സാധാരണമായ പിശക് ഇതാണ്.

കമാൻഡ് ഫയലുകൾക്കുള്ളിൽ, നിങ്ങൾക്ക് പരിസ്ഥിതി വേരിയബിളുകൾ (അല്ലെങ്കിൽ എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ) എന്ന് വിളിക്കപ്പെടുന്നവ ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ കഴിയും, അവയിൽ ഓരോന്നും സംഭരിച്ചിരിക്കുന്നു. റാൻഡം ആക്സസ് മെമ്മറി, അതിൻ്റേതായ തനതായ പേരുണ്ട്, അതിൻ്റെ മൂല്യം ഒരു സ്ട്രിംഗാണ്. ബൂട്ട് പ്രക്രിയയിൽ സ്റ്റാൻഡേർഡ് എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ സ്വയമേവ ആരംഭിക്കുന്നു ഓപ്പറേറ്റിംഗ് സിസ്റ്റം. അത്തരം വേരിയബിളുകൾ, ഉദാഹരണത്തിന്, സ്ഥാനം നിർണ്ണയിക്കുന്ന WINDIR ആണ് വിൻഡോസ് ഡയറക്ടറി, TEMP, ഇത് സ്റ്റോറേജ് ഡയറക്ടറിയിലേക്കുള്ള പാത വ്യക്തമാക്കുന്നു താൽക്കാലിക ഫയലുകൾസിസ്റ്റം പാത്ത് (സെർച്ച് പാത്ത്) സംഭരിക്കുന്ന വിൻഡോസ് അല്ലെങ്കിൽ പാത്ത്, അതായത്, സിസ്റ്റം എക്സിക്യൂട്ടബിളുകൾ അല്ലെങ്കിൽ ഫയലുകൾക്കായി തിരയേണ്ട ഡയറക്ടറികളുടെ ഒരു ലിസ്റ്റ് പങ്കുവയ്ക്കുന്നു(ഉദാഹരണത്തിന്, ഡൈനാമിക് ലൈബ്രറികൾ). കൂടാതെ, ഉപയോഗിക്കുന്ന ബാച്ച് ഫയലുകളിൽ സെറ്റ് കമാൻഡുകൾനിങ്ങൾക്ക് നിങ്ങളുടെ സ്വന്തം പരിസ്ഥിതി വേരിയബിളുകൾ പ്രഖ്യാപിക്കാൻ കഴിയും.

ഒരു വേരിയബിളിൻ്റെ മൂല്യം നേടുന്നു

ഒരു നിശ്ചിത മൂല്യം ലഭിക്കാൻ പരിസ്ഥിതി വേരിയബിൾനിങ്ങൾ ഈ വേരിയബിളിൻ്റെ പേര് % ചിഹ്നങ്ങളിൽ ഉൾപ്പെടുത്തേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്:

@ECHO OFF CLS REM MyVar SET MyVar എന്ന വേരിയബിൾ സൃഷ്‌ടിക്കുക=ഹലോ REM മാറ്റുക വേരിയബിൾ SET MyVar=%MyVar%! ECHO MyVar വേരിയബിൾ മൂല്യം: %MyVar% REM MyVar വേരിയബിൾ ഇല്ലാതാക്കുന്നു SET MyVar= ECHO WinDir വേരിയബിൾ മൂല്യം: %WinDir%

നിങ്ങൾ അത്തരമൊരു ബാച്ച് ഫയൽ പ്രവർത്തിപ്പിക്കുമ്പോൾ, ലൈൻ സ്ക്രീനിൽ പ്രദർശിപ്പിക്കും

MyVar വേരിയബിൾ മൂല്യം: ഹലോ! WinDir വേരിയബിൾ മൂല്യം: C:\WINDOWS

വേരിയബിളുകൾ സ്ട്രിംഗുകളായി പരിവർത്തനം ചെയ്യുന്നു

ബാച്ച് ഫയലുകളിലെ എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ചെയ്യാവുന്ന ചില കൃത്രിമങ്ങൾ ഉണ്ട്. ഒന്നാമതായി, കോൺകാറ്റനേഷൻ്റെ (ഗ്ലൂയിംഗ്) പ്രവർത്തനം അവയിൽ നടത്താം. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ SET കമാൻഡിൽ പരസ്പരം ബന്ധിപ്പിച്ചിരിക്കുന്ന വേരിയബിളുകളുടെ മൂല്യങ്ങൾ എഴുതേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്,

സെറ്റ് എ=ഒരു സെറ്റ് ബി=രണ്ട് സെറ്റ് സി=%എ%%ബി%

ഫയലിൽ ഈ കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്ത ശേഷം, C വേരിയബിളിൻ്റെ മൂല്യം സ്ട്രിംഗ് "ഡബിൾ" ആയിരിക്കും. സംയോജിപ്പിക്കുന്നതിന് നിങ്ങൾ + ചിഹ്നം ഉപയോഗിക്കരുത്, കാരണം ഇത് ഒരു ചിഹ്നമായി വ്യാഖ്യാനിക്കപ്പെടും. ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന ഉള്ളടക്കമുള്ള ഫയൽ പ്രവർത്തിപ്പിച്ചതിന് ശേഷം

SET A=ഒരു സെറ്റ് B=രണ്ട് സെറ്റ് C=A+B ECHO വേരിയബിൾ C=%C% SET D=%A%+%B% ECHO വേരിയബിൾ D=%D%

രണ്ട് വരികൾ സ്ക്രീനിൽ ദൃശ്യമാകും:

വേരിയബിൾ C=A+B വേരിയബിൾ D=ഒന്ന്+രണ്ട്

രണ്ടാമതായി, കൺസ്ട്രക്‌റ്റ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു എൻവയോൺമെൻ്റ് വേരിയബിളിൽ നിന്ന് സബ്‌സ്‌ട്രിംഗുകൾ എക്‌സ്‌ട്രാക്റ്റുചെയ്യാനാകും %variable_name:~n1,n2%, n1 എന്ന സംഖ്യ, അനുബന്ധ പരിസ്ഥിതി വേരിയബിളിൻ്റെ തുടക്കം മുതൽ (n1 പോസിറ്റീവ് ആണെങ്കിൽ) അല്ലെങ്കിൽ അവസാനം മുതൽ (n1 നെഗറ്റീവാണെങ്കിൽ) ഓഫ്സെറ്റ് (ഒഴിവാക്കേണ്ട പ്രതീകങ്ങളുടെ എണ്ണം) നിർണ്ണയിക്കുന്നു, കൂടാതെ n2 എന്നത് സംഖ്യയാണ് അനുവദിക്കേണ്ട പ്രതീകങ്ങൾ (n2 പോസിറ്റീവ് ആണെങ്കിൽ) അല്ലെങ്കിൽ നമ്പർ അവസാന കഥാപാത്രങ്ങൾതിരഞ്ഞെടുത്ത സബ്‌സ്‌ട്രിംഗിൽ ഉൾപ്പെടുത്താത്ത ഒരു വേരിയബിളിൽ (n2 നെഗറ്റീവ് ആണെങ്കിൽ). ഒരു നെഗറ്റീവ് -n ഓപ്‌ഷൻ മാത്രമേ വ്യക്തമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, അവസാനത്തെ n പ്രതീകങ്ങൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്യപ്പെടും. ഉദാഹരണത്തിന്, %DATE% വേരിയബിൾ "09/21/2007" (ചില പ്രാദേശിക ക്രമീകരണങ്ങളിലെ നിലവിലെ തീയതിയുടെ പ്രതീകാത്മക പ്രതിനിധാനം) സ്ട്രിംഗ് സംഭരിക്കുന്നുവെങ്കിൽ, ഇനിപ്പറയുന്ന കമാൻഡുകൾ നടപ്പിലാക്കിയ ശേഷം

SET dd1=%DATE:~0.2% SET dd2=%DATE:~0.-8% SET mm=%DATE:~-7.2% SET yyyy=%DATE:~-4%

പുതിയ വേരിയബിളുകൾക്ക് ഇനിപ്പറയുന്ന മൂല്യങ്ങൾ ഉണ്ടായിരിക്കും: %dd1%=21, %dd2%=21, %mm%=09, %yyyy%=2007.

മൂന്നാമതായി, നിർമ്മാണം ഉപയോഗിച്ച് നിങ്ങൾക്ക് സബ്സ്ട്രിംഗ് മാറ്റിസ്ഥാപിക്കൽ നടപടിക്രമം നടത്താം %variable_name:s1=s2%(ഇത് അനുബന്ധ എൻവയോൺമെൻ്റ് വേരിയബിളിലെ സബ്‌സ്ട്രിംഗ് s1 ൻ്റെ എല്ലാ സംഭവങ്ങളോടും കൂടി s2 മാറ്റി പകരം വയ്ക്കുന്ന ഒരു സ്ട്രിംഗ് നൽകും). ഉദാഹരണത്തിന്, കമാൻഡുകൾ എക്സിക്യൂട്ട് ചെയ്ത ശേഷം

SET a=123456 SET b=%a:23=99%

വേരിയബിൾ b "199456" സ്ട്രിംഗ് സംഭരിക്കും. s2 പാരാമീറ്റർ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, ഔട്ട്‌പുട്ട് സ്ട്രിംഗിൽ നിന്ന് സബ്‌സ്ട്രിംഗ് s1 നീക്കംചെയ്യപ്പെടും, അതായത്. കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്ത ശേഷം

SET a=123456 SET b=%a:23=%

വേരിയബിൾ b "1456" സ്ട്രിംഗ് സംഭരിക്കും.

അക്കങ്ങൾ പോലെ വേരിയബിളുകൾ ഉപയോഗിച്ചുള്ള പ്രവർത്തനങ്ങൾ

മെച്ചപ്പെടുത്തിയ കമാൻഡ് പ്രോസസ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ (Windows XP-യിലെ സ്ഥിരസ്ഥിതി മോഡ്), പരിസ്ഥിതി വേരിയബിൾ മൂല്യങ്ങളെ അക്കങ്ങളായി കണക്കാക്കാനും അവയിൽ ഗണിത കണക്കുകൂട്ടലുകൾ നടത്താനും കഴിയും. ഇത് ചെയ്യുന്നതിന്, /A സ്വിച്ച് ഉപയോഗിച്ച് SET കമാൻഡ് ഉപയോഗിക്കുക. കമാൻഡ് ലൈൻ പാരാമീറ്ററുകളായി നൽകിയിരിക്കുന്ന രണ്ട് അക്കങ്ങൾ ചേർക്കുകയും തത്ഫലമായുണ്ടാകുന്ന തുക സ്ക്രീനിൽ പ്രദർശിപ്പിക്കുകയും ചെയ്യുന്ന add.bat ബാച്ച് ഫയലിൻ്റെ ഒരു ഉദാഹരണം ഇതാ:

@ECHO ഓഫ് REM വേരിയബിൾ M SET /A M=%1+%2 സംഭരിക്കും ECHO %1, %2 എന്നിവയുടെ ആകെത്തുക %M% REM ന് തുല്യമാണ് M SET M= വേരിയബിൾ ഇല്ലാതാക്കുക

പ്രാദേശിക മാറ്റങ്ങൾവേരിയബിളുകൾ

SET കമാൻഡ് ഉപയോഗിച്ച് ഒരു കമാൻഡ് ഫയലിലെ എൻവയോൺമെൻ്റ് വേരിയബിളുകളിൽ നിങ്ങൾ വരുത്തുന്ന ഏതൊരു മാറ്റവും ഫയൽ പുറത്തുകടന്നതിന് ശേഷവും നിലനിൽക്കും, എന്നാൽ നിലവിലെ കമാൻഡ് വിൻഡോയിൽ മാത്രമേ അത് ഫലപ്രദമാകൂ. ഒരു ബാച്ച് ഫയലിനുള്ളിൽ എൻവയോൺമെൻ്റ് വേരിയബിളുകളിലേക്കുള്ള മാറ്റങ്ങൾ പ്രാദേശികവൽക്കരിക്കാനും സാധ്യമാണ്, അതായത്, ഫയൽ സമാരംഭിക്കുന്നതിന് മുമ്പുള്ള എല്ലാ വേരിയബിളുകളുടെയും മൂല്യങ്ങൾ സ്വയമേവ പുനഃസ്ഥാപിക്കുക. ഇതിനായി രണ്ട് കമാൻഡുകൾ ഉപയോഗിക്കുന്നു: SETLOCAL, ENDLOCAL. SETLOCAL കമാൻഡ് ഒരു ഏരിയയുടെ ആരംഭം നിർണ്ണയിക്കുന്നു പ്രാദേശിക ഇൻസ്റ്റാളേഷനുകൾപരിസ്ഥിതി വേരിയബിളുകൾ. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, SETLOCAL പ്രവർത്തിപ്പിച്ചതിന് ശേഷം വരുത്തിയ പരിസ്ഥിതി മാറ്റങ്ങൾ നിലവിലെ ബാച്ച് ഫയലിൽ പ്രാദേശികമായിരിക്കും. മുമ്പത്തെ പരിസ്ഥിതി വേരിയബിൾ മൂല്യങ്ങൾ പുനഃസ്ഥാപിക്കുന്നതിന് ഓരോ SETLOCAL കമാൻഡിനും അനുബന്ധ ENDLOCAL കമാൻഡ് ഉണ്ടായിരിക്കണം. ENDLOCAL കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്തതിന് ശേഷം വരുത്തിയ പാരിസ്ഥിതിക മാറ്റങ്ങൾ നിലവിലെ ബാച്ച് ഫയലിൽ പ്രാദേശികമല്ല; ഈ ഫയലിൻ്റെ നിർവ്വഹണം പൂർത്തിയാകുമ്പോൾ അവയുടെ മുൻ മൂല്യങ്ങൾ പുനഃസ്ഥാപിക്കില്ല.

ബാച്ച് (കമാൻഡ്) ഫയലുകളിൽ ഉപയോഗിക്കുന്ന എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ വ്യക്തമാക്കുന്നത് ഒഴിവാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു കേവല പാതകൾഡയറക്ടറികളിലേക്ക്. ഉദാഹരണത്തിന്, നമുക്ക് കത്ത് മുൻകൂട്ടി അറിയില്ലെങ്കിൽ സിസ്റ്റം ഡിസ്ക്, നമുക്ക് എപ്പോഴും ഒരു വേരിയബിൾ ഉപയോഗിക്കാം %സിസ്റ്റംഡ്രൈവ്%, അത് OS ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്ന ഡ്രൈവ് ലെറ്റർ നൽകുന്നു. കൂടാതെ, കോഡ് ഒപ്റ്റിമൈസ് ചെയ്യാൻ വേരിയബിളുകൾ ഉപയോഗിക്കുന്നു - ആവർത്തിച്ച് ആവർത്തിക്കുന്ന പരാമീറ്റർ (ഉദാഹരണത്തിന്, ഒരു രജിസ്ട്രി കീ) ഒരു ചെറിയ വേരിയബിൾ നൽകുകയും ഉപയോഗിക്കുകയും ചെയ്യാം. ഈ ലേഖനം വിശദമായി ചർച്ച ചെയ്യുന്നു വിവിധ സാങ്കേതിക വിദ്യകൾവേരിയബിളുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നു, അതുപോലെ തന്നെ പുതിയ വേരിയബിളുകൾ മാറ്റുന്നതിനും സൃഷ്ടിക്കുന്നതിനുമുള്ള വഴികൾ. ഇനി നമുക്ക് എല്ലാം ക്രമത്തിൽ സംസാരിക്കാം.

പരിസ്ഥിതി വേരിയബിളുകളുടെ വർഗ്ഗീകരണം

സംഗ്രഹം

ടീം വിൻഡോസ് ഷെൽ(cmd.exe) തികച്ചും ശക്തമായ ഉപകരണംസിസ്റ്റവുമായി പ്രവർത്തിക്കുന്നു. ബാച്ച് ഫയലുകൾക്ക് ന്യായമായ അളവിലുള്ള ജോലികൾ ഓട്ടോമേറ്റ് ചെയ്യാൻ കഴിയും, അതിനാലാണ് അവ പലപ്പോഴും ഉപയോഗിക്കുന്നത് ഓട്ടോമാറ്റിക് ഇൻസ്റ്റലേഷൻവിൻഡോസ്. ബാച്ച് ഫയലുകളിലെ വേരിയബിളുകളുടെ നൈപുണ്യത്തോടെയുള്ള ഉപയോഗം വൈവിധ്യമാർന്ന പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. കമാൻഡ് ഷെല്ലിനൊപ്പം പ്രവർത്തിക്കുന്നത് കൂടുതൽ കാര്യക്ഷമമാവുകയും അതേ സമയം ബാച്ച് ഫയലുകൾക്കുള്ള കോഡ് ലളിതമാക്കുകയും ചെയ്യുന്നു. വെബ്‌സൈറ്റിൻ്റെയോ ഫോറത്തിൻ്റെയോ പേജുകളിൽ വേരിയബിളുകൾ ഉപയോഗിക്കുന്നതിനുള്ള മറ്റ് ഉദാഹരണങ്ങൾ നിങ്ങൾക്ക് കണ്ടെത്താനാകും. ഈ ലേഖനത്തിൽ ഉപയോഗിച്ചിരിക്കുന്ന എല്ലാ ഉദാഹരണങ്ങളും പങ്കെടുക്കുന്നവരുടെ സ്ക്രിപ്റ്റുകളിൽ നിന്ന് എടുത്തതാണ്, അതിന് അവർക്ക് ഒരുപാട് നന്ദി.

ടെർമിനോളജി

കമാൻഡ് ഷെൽ- ഇത് പ്രത്യേകമാണ് സോഫ്റ്റ്വെയർ, ഇത് ഉപയോക്താവും ഓപ്പറേറ്റിംഗ് സിസ്റ്റവും തമ്മിൽ നേരിട്ട് ആശയവിനിമയം നൽകുന്നു. വാചകം ഉപയോക്തൃ ഇൻ്റർഫേസ്കമാൻഡ് ലൈൻ ആപ്ലിക്കേഷനുകൾക്കുള്ള ഒരു അന്തരീക്ഷം നൽകുന്നു യൂട്ടിലിറ്റികൾഒരു ടെക്സ്റ്റ് ഇൻ്റർഫേസ് ഉപയോഗിച്ച്.

cmd.exe- ഒരു കമാൻഡ് ഇൻ്റർപ്രെറ്റർ കമാൻഡ് ഷെൽനൽകിയ കമാൻഡ് സിസ്റ്റം മനസ്സിലാക്കുന്ന ഒരു ഫോർമാറ്റിലേക്ക് വിവർത്തനം ചെയ്യാൻ Windows OS ഉപയോഗിക്കുന്നു.

ടീം സെഷൻലോഞ്ച് വഴി ഒന്നുകിൽ ആരംഭിക്കാവുന്നതാണ് cmd.exe, കൂടാതെ ഒരു ബാച്ച് ഫയൽ പ്രവർത്തിപ്പിക്കുന്നതിലൂടെയും. മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, നിലവിലെ കമാൻഡ് ഷെൽ സൃഷ്ടിച്ചിരിക്കുന്നു. അതനുസരിച്ച്, ഈ ഷെല്ലിൽ നിന്ന് പുറത്തുകടക്കുന്നത് (ഉദാഹരണത്തിന്, ഒരു ബാച്ച് ഫയൽ പൂർത്തിയാക്കുന്നത്) കമാൻഡ് സെഷൻ അവസാനിക്കുന്നു.

ഉപയോക്തൃ സെഷൻ(ഉപയോക്തൃ സെഷൻ) ഉപയോക്താവ് ലോഗിൻ ചെയ്യുമ്പോൾ (ലോഗിൻ) ആരംഭിക്കുകയും ഉപയോക്താവ് ലോഗ് ഓഫ് ചെയ്യുമ്പോൾ അവസാനിക്കുകയും ചെയ്യുന്നു (ലോഗ് ഓഫ്).

    ടീം സെറ്റ്വിൻഡോസ് കമാൻഡ് ലൈനിൽ പരിസ്ഥിതി വേരിയബിളുകൾ കാണാനും മാറ്റാനും ഉപയോഗിക്കുന്നു. എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ വേരിയബിളുകളാണ്, അവയുടെ അംഗീകൃത മൂല്യങ്ങൾ പരിസ്ഥിതിയെ സ്വഭാവമാക്കുന്നു. നിലവിലെ പ്രോഗ്രാം- വഴികൾ സിസ്റ്റം ഫയലുകൾ, ഹാർഡ്‌വെയർ വിവരങ്ങൾ, ഉപയോക്തൃ ഡയറക്ടറികൾ മുതലായവ. പ്രക്രിയയ്ക്കിടെ പരിസ്ഥിതി വേരിയബിൾ മൂല്യങ്ങൾ സൃഷ്ടിക്കപ്പെടുന്നു വിൻഡോസ് ബൂട്ട്, സിസ്റ്റത്തിലെ ഉപയോക്തൃ രജിസ്ട്രേഷൻ, എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ വ്യക്തിഗത പ്രക്രിയകൾഅല്ലെങ്കിൽ കമാൻഡ് ഉപയോഗിച്ച് സെറ്റ്. ഒരു നിർദ്ദിഷ്ട വേരിയബിൾ അനുമാനിക്കുന്ന മൂല്യം കാണുന്നതിന്, നിങ്ങൾക്ക് കമാൻഡ് ഉപയോഗിക്കാം:

സെറ്റ് വേരിയബിൾ
പാത സജ്ജമാക്കുക- ഒരു വേരിയബിളിൻ്റെ മൂല്യം പ്രദർശിപ്പിക്കുക പാത
ഒരു പുതിയ വേരിയബിൾ സൃഷ്ടിക്കുന്നതിനോ നിലവിലുള്ള ഒന്നിൻ്റെ മൂല്യം മാറ്റുന്നതിനോ, കമാൻഡ് ഉപയോഗിക്കുക:

സെറ്റ് വേരിയബിൾ=സ്ട്രിംഗ്

വേരിയബിൾ- പരിസ്ഥിതി വേരിയബിൾ പേര്.
ലൈൻ- നിർദ്ദിഷ്‌ട വേരിയബിളിലേക്ക് അസൈൻ ചെയ്‌തിരിക്കുന്ന ഒരു പ്രതീക സ്‌ട്രിംഗ്.

MyName=Vasya സജ്ജീകരിക്കുക- ഒരു വേരിയബിളിൻ്റെ മൂല്യം സജ്ജമാക്കുക എന്റെ പേര്

സെറ്റ് പാത്ത്=C:\progs;%path%- ഒരു വേരിയബിളിൻ്റെ മൂല്യം മാറ്റുക പാതവരിയുടെ തുടക്കത്തിൽ ചേർത്തുകൊണ്ട് സി:\പ്രോഗുകൾ

വേരിയബിൾ സ്വീകരിച്ച മൂല്യം, ശതമാനം ചിഹ്നങ്ങളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന പേര് ഉപയോഗിച്ച് കമാൻഡ് ഫയലുകളിൽ പ്രോസസ്സ് ചെയ്യുന്നതിന് ലഭ്യമാണ് - % . ഉദാഹരണത്തിന്, ഫോമിൽ ECHO ഡിസ്പ്ലേയിൽ ടെക്സ്റ്റ് പ്രദർശിപ്പിക്കുന്നതിനുള്ള ഒരു കമാൻഡ്:

ECHO തീയതി- "തീയതി" എന്ന വാക്കും കമാൻഡും പ്രദർശിപ്പിക്കും
ECHO %തീയതി%വേരിയബിളിൻ്റെ മൂല്യം പ്രദർശിപ്പിക്കും തീയതി, അതായത്. നിലവിലെ തീയതിഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഫോർമാറ്റിൽ.

ടീം സെറ്റ്പരിസ്ഥിതി വേരിയബിളുകളുടെ നിലവിലെ മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന് പാരാമീറ്ററുകൾ ഇല്ലാതെ ഉപയോഗിക്കുന്നു.

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Usr\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=TEST7
ComSpec=C:\windows\system32\cmd.exe
FP_NO_HOST_CHECK=ഇല്ല
ഹോംഡ്രൈവ്=സി:
ഹോംപാത്ത്=\ഉപയോക്താക്കൾ\Usr
LOCALAPPDATA=C:\Users\Usr\AppData\Local
LOGONSERVER=\\TEST7
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
പാത=C:\windows\system32;C:\windows;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS; .VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 ഫാമിലി 15 മോഡൽ 3 സ്റ്റെപ്പിംഗ് 4, യഥാർത്ഥ ഇൻ്റൽ
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0304
പ്രോഗ്രാംഡാറ്റ=സി:\പ്രോഗ്രാംഡാറ്റ
പ്രോഗ്രാം ഫയലുകൾ=സി:\പ്രോഗ്രാം ഫയലുകൾ
PROMPT=$P$G
PSModulePath=C:\windows\system32\Windows PowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\windows
TEMP=C:\Users\Usr\AppData\Local\Temp
TMP=C:\Users\Usr\AppData\Local\Temp
USERDOMAIN=ടെസ്റ്റ്7
USERNAME=Usr
USERPROFILE=C:\Users\Usr
windir=C:\windows

SET കമാൻഡ് വിളിക്കുമ്പോൾ പട്ടികയിൽ പ്രദർശിപ്പിച്ചിരിക്കുന്ന വേരിയബിളുകൾക്ക് പുറമേ, മൂല്യങ്ങൾ ചലനാത്മകമായി മാറുന്ന മറ്റുള്ളവയും ഉണ്ട്:

%CD%- ഒരു മൂല്യം എടുക്കുന്നു നിലവിലെ ഡയറക്ടറി.
%DATE%- നിലവിലെ തീയതിയുടെ മൂല്യം എടുക്കുന്നു.
%TIME%- നിലവിലെ സമയത്തിൻ്റെ മൂല്യം എടുക്കുന്നു.
%റാൻഡം%- അർത്ഥം ക്രമരഹിത സംഖ്യ 0 നും 32767 നും ഇടയിലുള്ള ശ്രേണിയിൽ.
%ErrORLEVEL%- നിലവിലെ ERRORLEVEL മൂല്യം, പ്രോഗ്രാം എക്സിക്യൂഷൻ്റെ ഫലത്തിൻ്റെ സൂചനയായി ഉപയോഗിക്കുന്ന ഒരു പ്രത്യേക വേരിയബിൾ.
%CMDEXTVERSION% CMD.EXE വിപുലീകൃത കമാൻഡ് പ്രോസസ്സിംഗ് പതിപ്പ് മൂല്യം.
%CMDCMDLINE%- ഷെൽ എന്ന് വിളിക്കുന്ന യഥാർത്ഥ കമാൻഡ് ലൈനിലേക്ക് വികസിപ്പിക്കുന്നു.

SET കമാൻഡ് വിളിക്കുമ്പോൾ നിങ്ങൾ പേരിൻ്റെ ഒരു ഭാഗം മാത്രം വ്യക്തമാക്കുകയാണെങ്കിൽ, നിർദ്ദിഷ്ട സ്ട്രിംഗിൽ പേരുകൾ ആരംഭിക്കുന്ന വേരിയബിളുകളുടെ ഒരു ലിസ്റ്റ് പ്രദർശിപ്പിക്കും. ഉദാഹരണത്തിന്:

സെറ്റ് യു- "U" എന്നതിൽ തുടങ്ങുന്ന എല്ലാ വേരിയബിളുകളുടെയും മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കും.

SET കമാൻഡ് രണ്ട് അധിക സ്വിച്ചുകളെ പിന്തുണയ്ക്കുന്നു:

SET /A എക്സ്പ്രഷൻ

SET /P വേരിയബിൾ=

തുല്യ ചിഹ്നത്തിൻ്റെ വലതുവശത്തുള്ള സ്ട്രിംഗ് മൂല്യം വിലയിരുത്തപ്പെടുന്ന ഒരു സംഖ്യാ പദപ്രയോഗമാണെന്ന് /A സ്വിച്ച് വ്യക്തമാക്കുന്നു. എക്സ്പ്രഷൻ എഞ്ചിൻ വളരെ ലളിതവും മുൻഗണനയുടെ അവരോഹണ ക്രമത്തിൽ പട്ടികപ്പെടുത്തിയിരിക്കുന്ന ഇനിപ്പറയുന്ന പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നു:

ഏതെങ്കിലും ലോജിക്കൽ അല്ലെങ്കിൽ ബൈനറി ഓപ്പറേറ്റർമാർ ഉപയോഗിക്കുമ്പോൾ, നിങ്ങൾ ഉദ്ധരണി ചിഹ്നങ്ങളിൽ എക്സ്പ്രഷൻ സ്ട്രിംഗ് ഉൾപ്പെടുത്തണം. എക്സ്പ്രഷനിലെ ഏതെങ്കിലും നോൺ-ന്യൂമറിക് സ്ട്രിംഗുകൾ പരിസ്ഥിതി വേരിയബിൾ പേരുകളായി കണക്കാക്കുന്നു, അവയുടെ മൂല്യങ്ങൾ ഉപയോഗത്തിന് മുമ്പ് സംഖ്യാ രൂപത്തിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു. സിസ്റ്റത്തിൽ നിർദ്ദിഷ്‌ട പേരുള്ള ഒരു വേരിയബിൾ നിർവചിച്ചിട്ടില്ലെങ്കിൽ, പകരം ഒരു നൾ മൂല്യം പകരം വയ്ക്കുന്നു. പ്രകടനം നടത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു ഗണിത പ്രവർത്തനങ്ങൾപരിസ്ഥിതി വേരിയബിളുകളുടെ മൂല്യങ്ങൾക്കൊപ്പം, മൂല്യങ്ങൾ ലഭിക്കുന്നതിന് % ചിഹ്നങ്ങൾ നൽകേണ്ടതില്ല. ഒരു ബാച്ച് ഫയലിൽ നിന്നല്ല, കമാൻഡ് ലൈനിൽ നിന്നാണ് SET /A വിളിക്കുന്നതെങ്കിൽ, അത് എക്സ്പ്രഷൻ്റെ അന്തിമ മൂല്യം പ്രിൻ്റ് ചെയ്യുന്നു. പരിസ്ഥിതി വേരിയബിളിൻ്റെ പേര് ഏതെങ്കിലും അസൈൻമെൻ്റ് ഓപ്പറേറ്ററുടെ ഇടതുവശത്തായിരിക്കണം. സംഖ്യാ മൂല്യങ്ങൾഒരു പ്രിഫിക്‌സിന് മുമ്പല്ലെങ്കിൽ ദശാംശങ്ങളായി കണക്കാക്കുന്നു:

0x- ഹെക്സാഡെസിമൽ നമ്പറുകൾക്ക്
0 - വേണ്ടി അഷ്ടസംഖ്യകൾ.

പ്രിഫിക്സുകൾ ഉപയോഗിക്കുന്നതിനുള്ള ഉദാഹരണം:

സെറ്റ് /എ REZ=0xA+012
ECHO %REZ%

ഈ ബാച്ച് ഫയലിൽ, വേരിയബിളിൻ്റെ മൂല്യം REZഹെക്‌സാഡെസിമലിൽ (0xA) പ്രതിനിധീകരിക്കുന്ന സംഖ്യ 10 ഉം ഒക്‌റ്റലിൽ (012) പ്രതിനിധീകരിക്കുന്ന സംഖ്യ 10 ഉം ചേർത്താണ് കണക്കാക്കുന്നത്.

ഉപയോക്താവ് നൽകിയ ഇൻപുട്ട് സ്ട്രിംഗിനായി ഒരു വേരിയബിളിൻ്റെ മൂല്യം സജ്ജമാക്കാൻ /P സ്വിച്ച് നിങ്ങളെ അനുവദിക്കുന്നു. നൽകിയ സ്ട്രിംഗ് വായിക്കുന്നതിന് മുമ്പ് നിർദ്ദിഷ്ട പ്രോംപ്റ്റ്സ്ട്രിംഗ് പ്രോംപ്റ്റ് കാണിക്കുന്നു. promptString പ്രോംപ്റ്റ് ശൂന്യമായിരിക്കാം. ഈ കീഒരു ബാച്ച് ഫയലിൽ ഉപയോക്താവുമായി ഒരു ഡയലോഗ് സംഘടിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു:

@എക്കോ ഓഫ്
SET /P NAME=ഉപയോക്തൃനാമം നൽകുക:
SET /P പാസ്=പാസ്‌വേഡ് നൽകുക:
ECHO ഉപയോക്തൃനാമം - %NAME% , പാസ്‌വേഡ് - %PASS%

ബാച്ച് ഫയലുകളിൽ, പലപ്പോഴും നിങ്ങൾ ഒരു വേരിയബിൾ എടുത്ത മൂല്യത്തിൻ്റെ ഒരു ഭാഗം ഉപയോഗിച്ച് പ്രവർത്തിക്കേണ്ടതുണ്ട്, അതിനായി നിങ്ങൾ സബ്സ്റ്റിറ്റ്യൂഷൻ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു:

വേരിയബിൾ: string1=string2- വേരിയബിളിൻ്റെ സ്വീകരിച്ച മൂല്യത്തിൽ മാറ്റിസ്ഥാപിക്കുന്നു വരി1ഓൺ വരി2

അടുത്തത് ബാച്ച് ഫയൽനിലവിലെ തീയതിയുമായി ബന്ധപ്പെട്ട വേരിയബിൾ മൂല്യത്തിൽ ഡോട്ട് പ്രതീകം ഒരു ഡാഷ് പ്രതീകം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നത് ഉപയോഗിക്കുന്നു:

@എക്കോ ഓഫ്
tm=%DATE% സജ്ജമാക്കുക
ECHO തീയതി1 = %tm%
സെറ്റ് tm=%DATE:.=-%
ECHO തീയതി2 = %tm%

ഒരു വേരിയബിൾ എടുത്ത മൂല്യത്തിൻ്റെ ഒരു ഭാഗം ഹൈലൈറ്റ് ചെയ്യുന്നതിന്, ഇനിപ്പറയുന്ന നിർമ്മാണം ഉപയോഗിക്കുന്നു:

വേരിയബിൾ:~x,y- എവിടെ x- വരിയുടെ തുടക്കം മുതൽ ഒഴിവാക്കിയ പ്രതീകങ്ങളുടെ എണ്ണം, കൂടാതെ വൈ- വേരിയബിളിൻ്റെ മൂല്യമായി ഉപയോഗിക്കുന്ന പ്രതീകങ്ങളുടെ എണ്ണം.

ഇനിപ്പറയുന്ന ഉദാഹരണം സെക്കൻഡുകളും ഫ്രാക്ഷണൽ സെക്കൻഡുകളും ഇല്ലാതെ നിലവിലെ സമയ പ്രദർശനം ഉപയോഗിക്കുന്നു (ആദ്യത്തെ 5 പ്രതീകങ്ങൾ മാത്രം സ്റ്റാൻഡേർഡ് മൂല്യം TIME വേരിയബിൾ):

@എക്കോ ഓഫ്
tm=%TIME% സജ്ജമാക്കുക
ECHO സമയം1 = %tm%
സെറ്റ് tm=%TIME:~0.5%
ECHO സമയം2 = %tm%

മൂല്യമാണെങ്കിൽ വൈ(ദൈർഘ്യം) വ്യക്തമാക്കിയിട്ടില്ല, തുടർന്ന് വരിയുടെ അവസാനം വരെ ശേഷിക്കുന്ന വേരിയബിളിൻ്റെ മൂല്യം ഉപയോഗിക്കുന്നു. മൂല്യമാണെങ്കിൽ വൈനെഗറ്റീവ് ആണ്, തുടർന്ന് അവസാനം മുതൽ വേരിയബിൾ മൂല്യ സ്ട്രിംഗിൻ്റെ ഭാഗം ഉപയോഗിക്കുന്നു. ലഭിച്ച സമയ മൂല്യം അവസാനത്തിൽ നിന്ന് 6 പ്രതീകങ്ങൾ നീക്കം ചെയ്തതായി വ്യക്തമാക്കുന്നതിന് മുമ്പത്തെ ഉദാഹരണം പരിഷ്‌ക്കരിക്കാവുന്നതാണ്:

@എക്കോ ഓഫ്
tm=%TIME% സജ്ജമാക്കുക
ECHO സമയം1 = %tm%
സെറ്റ് tm=%TIME:~0.-6%
ECHO സമയം2 = %tm%

വ്യക്തമാക്കിയിട്ടില്ലാത്ത വിടവുകളുടെ എണ്ണം ഉപയോഗിക്കാൻ കഴിയും, കൂടാതെ ഒരു നെഗറ്റീവ് നമ്പർ ഉപയോഗിക്കുന്നു, തുടർന്ന് ലഭിച്ച മൂല്യം വരിയുടെ അവസാനം മുതൽ വേരിയബിളിൻ്റെ ഭാഗമായിരിക്കും:

%പാത്ത്:~-10%- PATH വേരിയബിളിൻ്റെ അവസാന 10 പ്രതീകങ്ങൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്യും

ശൂന്യമായ മൂല്യംഒഴിവാക്കാവുന്നതാണ്, പകരം വയ്ക്കൽ ഫോർമാറ്റ് സംരക്ഷിക്കുന്നു:

%പാത്ത്:~0.-2%തത്തുല്യമായ %പാത്ത്:~,-2%

ഉപയോഗിക്കുന്നത് പരിസ്ഥിതി വേരിയബിളുകൾബാച്ച് ഫയലുകളിൽ, പരാൻതീസിസിൽ വ്യക്തമാക്കിയിട്ടുള്ള ഒരു കൂട്ടം കമാൻഡുകൾക്കുള്ളിൽ, അസൈൻ ചെയ്‌ത മൂല്യം മാറ്റമില്ലാതെ തുടരുന്നു എന്ന വസ്തുതയുമായി ബന്ധപ്പെട്ട ഒരു നിശ്ചിത പരിമിതിയുണ്ട്, ഉദാഹരണത്തിന് കമാൻഡുകളിൽ. IFഅഥവാ വേണ്ടി. മറികടക്കാൻ ഈ പരിമിതിവിക്ഷേപണം ഉപയോഗിക്കുന്നു കമാൻഡ് പ്രൊസസർ/V:ON പാരാമീറ്റർ ഉപയോഗിച്ച്, ലഭിച്ചവ ലഭിക്കുന്നതിന് ശതമാനം ചിഹ്നങ്ങൾക്ക് പകരം മൂല്യ വേരിയബിൾ, ഉപയോഗിക്കുന്നു ആശ്ചര്യചിഹ്നങ്ങൾ. കൂടാതെ, അത് ഉപയോഗിക്കാൻ കഴിയും സ്റ്റാൻഡേർഡ് ലോഞ്ച്കമാൻഡ് പ്രൊസസർ, എന്നാൽ കൂടെ പ്രാദേശിക സജീവമാക്കൽ ഈ മോഡ്കമാൻഡ്:

വേരിയബിൾ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നതിൻ്റെ ഫലങ്ങളിലെ വ്യത്യാസം ഇനിപ്പറയുന്ന ബാച്ച് ഫയൽ വളരെ വ്യക്തമായി പ്രകടമാക്കുന്നു:


@എക്കോ ഓഫ്
VAR=മുമ്പ് സജ്ജമാക്കുക
എങ്കിൽ "%VAR%" == "മുമ്പ്" (
VAR=ശേഷം സജ്ജമാക്കുക
എങ്കിൽ "!VAR!" == "ശേഷം" @echo ശതമാനം ചിഹ്നത്തോടെ=%VAR% , ചോദ്യചിഹ്നത്തോടെ=!VAR!

ടീം VAR=ശേഷം സജ്ജമാക്കുകപരാൻതീസിസുകളാൽ വേർതിരിച്ച ഒരു സബ്റൂട്ടീനിനുള്ളിൽ നടപ്പിലാക്കുകയും, കമാൻഡ് നീക്കം ചെയ്താൽ Setlocal EnableDelayedExpansionഅല്ലെങ്കിൽ ഒരു വേരിയബിളിൻ്റെ മൂല്യം ലഭിക്കാൻ ഉപയോഗിക്കേണ്ടതില്ല VARആശ്ചര്യചിഹ്നങ്ങൾ, അതിൻ്റെ മൂല്യം പഴയതായി തുടരും (സബ്റൂട്ടീനിൽ പ്രവേശിക്കുന്നതിന് മുമ്പ് സജ്ജീകരിച്ചത്). കമാൻഡ് ലൂപ്പിനുള്ളിൽ ഒരു വേരിയബിളിൻ്റെ മൂല്യം മാറ്റുമ്പോൾ സമാനമായ ഒരു പ്രശ്നം സംഭവിക്കുന്നു. വേണ്ടി. ഉദാഹരണത്തിന്, നിലവിലെ ഡയറക്‌ടറിയിൽ ഫയലുകളുടെ ഒരു ലിസ്റ്റ് ലഭിക്കാൻ, ഇതുപോലുള്ള ഒരു ബാച്ച് ഫയൽ പ്രവർത്തിക്കില്ല:

LIST= സജ്ജമാക്കുക
(*) ൽ %%i എന്നതിന് LIST=%LIST% %%i എന്ന് സജ്ജീകരിക്കുക
പ്രതിധ്വനി %LIST%

വേരിയബിൾ മൂല്യം ലിസ്റ്റ്ലൂപ്പിനുള്ളിൽ മാറ്റില്ല. ഇത് സംഭവിക്കുന്നതിന്, ബാച്ച് ഫയൽ ഇനിപ്പറയുന്ന രീതിയിൽ പരിഷ്ക്കരിക്കേണ്ടതുണ്ട്:

Setlocal EnableDelayedExpansion
LIST= സജ്ജമാക്കുക
(*) ലെ %%i എന്നതിനായി LIST=!LIST സജ്ജമാക്കുക! %%i
പ്രതിധ്വനി %LIST%

ഇപ്പോൾ, വേരിയബിളിൻ്റെ മൂല്യം ലിസ്റ്റ്ഒരു ലൂപ്പിനുള്ളിൽ വേണ്ടിസ്‌പെയ്‌സ് കൊണ്ട് വേർതിരിക്കുന്ന ഫയൽ നാമങ്ങളുടെ മൂല്യങ്ങൾ തുടർച്ചയായി സ്വീകരിക്കും ( LIST=!LIST സജ്ജമാക്കുക! %%i)