Answers:
2000 සිට සියලුම මයික්රොසොෆ්ට් මෙහෙයුම් පද්ධති වල මේ ආකාරයටම අදටත් හොඳයි:
dir & echo foo
දෙවන විධානය ක්රියාත්මක කිරීමට ඔබට අවශ්ය නම් පළමුවැන්න සාර්ථකව පිටව ගියහොත් පමණි:
dir && echo foo
එක් පේළියක බහුවිධ විධානයන් ක්රියාත්මක කිරීම සඳහා තනි ඇම්පියර්සෑන්ඩ් (&) සින්ටැක්ස් වින්ඩෝස් එක්ස්පී, වින්ඩෝස් 2000 සහ ඊට පෙර එන්.ටී. (අවම වශයෙන් 4.0, මෙහි එක් විචාරකයෙකුට අනුව.)
මේ ගැන තවත් කරුණු කිහිපයක් තිබේ, ඔබට මෙම පිටුව පහළට අනුචලනය කළ හැකිය.
අධ්යාපනික යැයි සිතිය හැකි අය සඳහා data තිහාසික දත්ත පහත දැක්වේ.
ඊට පෙර, && සින්ටැක්ස් යනු මයික්රොසොෆ්ට් විධාන පරිවර්තකයට එක් කිරීමට පෙර ෂෙල් ආදේශන 4DOS හි අංගයක් පමණි.
වින්ඩෝස් 95, 98 සහ එම්ඊ වල, ඔබ ඒ වෙනුවට පයිප්ප අක්ෂරය භාවිතා කරයි:
dir | echo foo
MS-DOS 5.0 සහ පසුව, විධාන පරිවර්තකයේ මීට පෙර වින්ඩෝස් සහ එන්ටී අනුවාදයන් හරහා, (ලේඛනගත නොකළ) විධාන බෙදුම්කරු 20 (Ctrl + T) අක්ෂරය විය, මම මෙහි ^ T සමඟ නිරූපණය කරමි.
dir ^T echo foo
cmd
විමසුමේදී ද ක්රියා කරයි, එබැවින් එයට ඇතුල් වීම නරක පුරුද්දක් නොවන බව මම සිතමි. :)
ප්රලේඛනයෙන් උපුටා ගැනීමක්:
බහු විධාන සහ කොන්දේසි සහිත සැකසුම් සංකේත භාවිතා කිරීම
කොන්දේසි සහිත සැකසුම් සංකේත භාවිතයෙන් ඔබට එක් විධාන රේඛාවකින් හෝ ස්ක්රිප්ට් එකකින් බහු විධාන ධාවනය කළ හැකිය. ඔබ කොන්දේසි සහිත සැකසුම් සංකේත සමඟ බහු විධානයන් ක්රියාත්මක කරන විට, කොන්දේසිගත සැකසුම් සංකේතයේ දකුණට ඇති විධානයන් කොන්දේසිගත සැකසුම් සංකේතයේ වම්පස ඇති විධානයෙහි ප්රති results ල මත පදනම්ව ක්රියා කරයි.
උදාහරණයක් ලෙස, ඔබට විධානයක් ක්රියාත්මක කිරීමට අවශ්ය වනුයේ පෙර විධානය අසමත් වුවහොත් පමණි. නැතහොත්, ඔබට විධානයක් ක්රියාත්මක කිරීමට අවශ්ය වනුයේ පෙර විධානය සාර්ථක නම් පමණි.
පහත දැක්වෙන වගුවේ ලැයිස්තුගත කර ඇති විශේෂ අක්ෂර බහු විධානයන් භාවිතා කිරීමට ඔබට භාවිතා කළ හැකිය.
& [...]
command1 & command2
එක් විධාන රේඛාවක බහු විධාන වෙන් කිරීමට භාවිතා කරන්න. Cmd.exe පළමු විධානය ද දෙවන විධානය ද ක්රියාත්මක කරයි.
&& [...]
command1 && command2
පහත දැක්වෙන විධානය ක්රියාත්මක කිරීමට භාවිතා කරන්න && සංකේතයට පෙර විධානය සාර්ථක නම් පමණි. Cmd.exe පළමු විධානය ක්රියාත්මක කරන අතර දෙවන විධානය ක්රියාත්මක කරන්නේ පළමු විධානය සාර්ථකව සම්පූර්ණ කළහොත් පමණි.
|| [...]
command1 || command2
පහත දැක්වෙන විධානය ක්රියාත්මක කිරීමට භාවිතා කරන්න || පෙර විධානය නම් || අසමත් වේ. Cmd.exe පළමු විධානය ක්රියාත්මක කරන අතර දෙවන විධානය ක්රියාත්මක කරන්නේ පළමු විධානය සාර්ථකව සම්පූර්ණ නොකළේ නම් පමණි (ශුන්යයට වඩා විශාල දෝෂ කේතයක් ලැබේ).
( ) [...]
(command1 & command2)
බහු විධානයන් කණ්ඩායම් කිරීමට හෝ කැදැල්ලට භාවිතා කරන්න.
; or ,
command1 parameter1;parameter2
විධාන පරාමිතීන් වෙන් කිරීමට භාවිතා කරන්න.
cmd /c "echo foo & echo bar"
.
vagrant up && vagrant ssh
වින්ඩෝස් 10 හි උද්ධෘත ලකුණු නොමැතිව වැඩ කර ඇත
&
- එය අසමමුහුර්ත කර සමාන්තරව ධාවනය වේ. මම හිර වී සිටියේ මා භාවිතා &&
කරන සමමුහුර්ත නිසා වන අතර එය දිගටම පවතින්නේ පළමු සාර්ථක වුවහොත් පමණි!
&
විධාන අසමමුහුර්ත හෝ සමාන්තර නොකරයි. command1 & command2
අවසන් වූ command2
පසු ක්රියාත්මක command1
වේ. සාර්ථකත්වය හෝ අසාර්ථකත්වය අදාල command1
නොවේ.
&
සඳහා බෑෂ් සමාන වේ ;
(ලකුණු විධාන) සහ &&
වන බෑෂ් සමාන වේ &&
(ලකුණු විධාන පෙර දෝෂයක් හේතුවෙන් නැත විට පමණක්).
;
පෙර ලිනක්ස් හි දැක නැත
;
පළමු විධානය ක්රියාත්මක කිරීම, එය අවසන් වන තෙක් බලා සිටීම, දෙවන විධානය ක්රියාත්මක කිරීම ය. &
පළමු විධානය ක්රියාත්මක කිරීම, එය පසුබිමට දැමීම සහ දෙවන විධානය ක්රියාත්මක කිරීම ය. එබැවින් වැඩසටහන් දෙකම එකවර දියත් කරයි. මේවා සංකේත සංයෝජනය නොවන බව සලකන්න, ඒවා පළමු විධානයට සංකේත පසුපස ය; progname &
දෙවන විධානයක් නොමැතිව ඔබට තනි විධානයක් පසුබිමෙන් දියත් කළ හැකිය .
ඔබට විධාන එකින් එක ක්රියාත්මක කිරීමට සහ ක්රියාත්මක කිරීමට හැකිය. උදාහරණයක්:c:\dir & vim myFile.txt
ඔබට cmd කෙටිමඟක් සෑදීමට අවශ්ය නම් (උදාහරණයක් ලෙස ඔබේ ඩෙස්ක්ටොප් එකේ) එකතු කරන්න / k පරාමිතිය (/ k යන්නෙන් තබා ගන්න, / c කවුළුව වැසෙනු ඇත):
cmd /k echo hello && cd c:\ && cd Windows
පරිසර විචල්යයන් ඉතා ඉක්මණින් ඇගයීමට ලක් කිරීමේ ගැටළුව මඟහරවා ගැනීමට ඔබට ඇමතුම භාවිතා කළ හැකිය - උදා
set A=Hello & call echo %A%
echo
මුද්රණය කරන්නේ පැරණි අගය මිස නව අගය නොවේ. අවම වශයෙන්, මෙය මගේ වින්ඩෝස් 7 කොටුවේ නිරීක්ෂණය කරනු ලැබේ.
setlocal EnableDelayedExpansion
ස්ක්රිප්ට් එකක හෝ cmd /v
). උදාහරණයක් ලෙස : timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
.
ගණනාවක් සකසන සංකේත හා එකම පේළියෙහි කිහිපයක් විධාන භාවිතයෙන් විට භාවිතා කළ හැකි අතර, අනෙක් නඩුව ප්රතිදානය වෙනස්, සමහර අවස්ථාවල දී හරවා යැවීමේ සැකසුම් විය හැක, හෝ හුදෙක් නැහැ. එක් වැදගත් අවස්ථාවක් වන්නේ විචල්යයන් හසුරුවන එකම රේඛා විධානයන් මත තැබීමයි.
@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!
0 1
ඉහත උදාහරණයේ ඔබ දකින පරිදි, විචල්යයන් භාවිතා කරන විධාන එකම පේළියක තබා ඇති විට, ඔබේ විචල්ය අගයන් යාවත්කාලීන කිරීම සඳහා ප්රමාද වූ විස්තාරණය භාවිතා කළ යුතුය. ඔබේ විචල්යය සුචිගත කර ඇත්නම්, එහි අගය එකම රේඛාවකින් යාවත්කාලීන කිරීමට %% විකරණකාරක සමඟ CALL විධානය භාවිතා කරන්න:
set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%
path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
එබැවින්, RegAsm
සන්දර්භය මෙනුවකින් ධාවනය කිරීමේ (එකලස් කිරීමේ ලියාපදිංචි කිරීමේ) නිශ්චිත කාර්යය සක්රීය කිරීමට මම උත්සාහ කළෙමි . මට තිබූ ගැටලුව නම්, කියවීමට පෙර ප්රති result ලය ක්ෂණිකව පහව යනු ඇත. ඒ නිසා මම පයිප්ප කිරීමට උත්සාහ කළෙමි Pause
, එය විධානය අසමත් වූ විට ක්රියා නොකරයි (මෙහි සඳහන් කර ඇති පරිදි .bat ස්ක්රිප්ට් හි විරාමය විධාන ක්රියා නොකරයි. මෙහි Batch ගොනු විධානය PAUSE ක්රියා නොකරයි ). ඒ නිසා මම උත්සාහ කළ cmd /k
නමුත් එය වැඩි විධාන සඳහා කවුළුව විවෘත කරයි (මට අවශ්ය වන්නේ ප්රති result ලය කියවීමට පමණි). ඒ නිසා මම දාමයට pause
පසුව එකක් එකතු කළෙමි exit
.
cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
මෙය චාම් එකක් මෙන් ක්රියා කරයි - RegAsm ගොනුව මත ධාවනය වන අතර එහි ප්රති results ල පෙන්වයි, ඉන්පසු "ඉදිරියට යාමට ඕනෑම යතුරක් ඔබන්න ..." විමසුමක් පෙන්වනු ලැබේ, පසුව යතුරක් එබූ විට විධාන විමසුම් කවුළුව වැසෙයි.
PS උනන්දුවක් දක්වන වෙනත් අය සඳහා, .dll ලිපිගොනු වලට dllfile ඇසුරක් එක් කිරීමට ඔබට පහත .reg ගොනු ඇතුළත් කිරීම් භාවිතා කළ හැකි අතර ඉන්පසු RegAsm විධාන දිගුවක් (පැන ගිය මිල ගණන් සහ බැක්ස්ලෑෂ් සැලකිල්ලට ගන්න):
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"
එකලස් කිරීමක් ලියාපදිංචි කිරීම සඳහා දැන් මට හොඳ දකුණු-ක්ලික් මෙනුවක් තිබේ.
මම එකම කවුළුව තුළ පිං දෙකක් තබා ගැනීමට උත්සාහ කරමි, එය එකම පේළියේ අනුක්රමික විධානයකි. පළමුවැන්න අවසන් කිරීමෙන් පසු දෙවන විධානය ක්රියාත්මක කරන්න.
විසඳුම වූයේ start /b
වින්ඩෝස් 7 විධාන විමසුමක් සමඟ ඒකාබද්ධ කිරීමයි.
සුපුරුදු පරිදි, නැතිව /b
ආරම්භ කර වෙනම කවුළුවකින් දියත් කරන්න.
එකම පේළියේ දියත් කිරීමට භාවිතා කරන විධානය:
start /b command1 parameters & command2 parameters
ඕනෑම ආකාරයකින්, ඔබ ප්රතිදානය විග්රහ කිරීමට කැමති නම්, මෙය භාවිතා කිරීමට මම නිර්දේශ නොකරමි. විධානවල ප්රතිදානය අතර ප්රතිදානය සීරීමට ලක්ව ඇති බව මම දුටුවෙමි.
හොඳයි, ඔබට විකල්ප දෙකක් තිබේ: පයිප්ප කිරීම හෝ &
:
DIR /S & START FILE.TXT
හෝ,
tasklist | find "notepad.exe"
පයිප්පින් කිරීම ( |
) එක් විධානයක ප්රතිදානය ගෙන එය තවත් විධානයකට දැමීම සඳහා වැඩි ය. සහ ( &
) කියන්නේ මෙය ක්රියාත්මක කරන්න, සහ එය.
&
සහ |
කරන්න සහ සියලු දී නම්, ඔවුන් වෙනස් කරන්නේ කොහොමද? මේ වන විට මෙම සංකල්ප ගැන නුහුරු පුද්ගලයින්ට තම අවස්ථා වලදී කුමන ඒවා භාවිතා කළ යුතුද යන්න තීරණය කිරීමට නොහැකි වී තිබේ.
නැත , cd / && tree && echo %time%
. දෝංකාර දෙන වේලාව පළමු විධානය ක්රියාත්මක කරන වේලාවයි.
නල මාර්ගයට යම් ගැටළුවක් ඇත, නමුත් එය ක්රියාත්මක වන ආකාරය ජනතාව දන්නා තාක් කල් එය තීරණාත්මක නොවේ.
තවත් එක් උදාහරණයක්: උදාහරණයක් ලෙස, අපි gulp
ගොඩ නැගීමේ පද්ධතිය භාවිතා කරන විට , ඒ වෙනුවට
gulp
- පෙරනිමි> ගොඩනැගීම
gulp build
- බිල්ඩ් ෆෝල්ඩරය සාදන්න
gulp watch
- ගොනු ඔරලෝසුව ආරම්භ කරන්න
gulp dist
- dist-folder සාදන්න
අපට එය එක් පේළියකින් කළ හැකිය:
cd c:\xampp\htdocs\project & gulp & gulp watch
ඔබ එක් පේළියක විචල්යයන් භාවිතා කිරීමට හෝ හැසිරවීමට උත්සාහ කරන විට ඒවායේ අන්තර්ගතය ගැන පරිස්සම් වන්න! උදා: පහත දැක්වෙන ආකාරයේ විචල්යයකි
PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
ඔබ එය භාවිතා කරන්නේ නම් එය පාලනය කළ නොහැකි කරදර රාශියකට මඟ පෑදිය හැකිය %PATH%
%PATH%
වරහන් ගැටළුව විසඳීම සඳහා ද්විත්ව උපුටා දැක්වීම් ඔබට භාවිතා කිරීමට ඉඩ නොදේ%USERPROFILE%
අඩංගු වන්නේ කුමක්ද?&
එක් පේළියක විධානය භාවිතා කිරීමට කවුළුවල සංකේතය භාවිතා කරන්න
C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook
අපි භාවිතා කරන ලිනක්ස් වල වගේ,
touch thisfile ; ls -lstrh
ඔව් තියෙනවා. එය&
.
&&
විධානය 1 සම්පුර්ණ වූ විට එය අසාර්ථක නොවී 2 විධානය ක්රියාත්මක කරයි.
&
නොසලකා ක්රියාත්මක කරනු ඇත.
එය සරලයි:&&
සලකුණු සමඟ ඒවා වෙන්කර හඳුනා ගන්න . උදාහරණයක්:
echo "Hello World" && echo "GoodBye World".
"ආයුබෝවන් ලෝකය" "හෙලෝ වර්ල්ඩ්" පසු මුද්රණය කෙරේ.
&&
එය වේ කොන්දේසි පළමු විධාන (errorlevel = 0) මහත්මියත් දියණි විට ක්රියාකරු, ඊළඟ විධානය පමණක් ක්රියාත්මක වන
Hello World
අසමත් වූයේ නැත. ජෙබ් පැවසූ &&
පරිදි කොන්දේසි සහිත ය. &
පෙර සාර්ථකද නැද්ද යන්න නොසලකා විධාන ක්රියාත්මක කරයි.