පවර්ෂෙල් හි එක් පේළියක බහු විධාන ක්‍රියාත්මක කරන්නේ කෙසේද?


324

Cmd විමසුමක් තුළ, ඔබට එක් පේළියක විධාන දෙකක් ක්‍රියාත්මක කළ හැකිය:

ipconfig /release & ipconfig /renew

මම මෙම විධානය පවර්ෂෙල් හි ක්‍රියාත්මක කරන විට, මට ලැබෙන්නේ:

Ampersand not allowed. The `&` operator is reserved for future use

පවර්ෂෙල් සතුව සෙන්ටිමීටර විමසුමට සමාන ප්‍රමාණයක් ඉක්මනින් නිපදවීමට මට ඉඩ සලසන ක්‍රියාකරු &සිටීද?

එක් පේළියක විධාන දෙකක් ක්‍රියාත්මක කිරීමේ ඕනෑම ක්‍රමයක් කරනු ඇත. මට පිටපතක් සෑදිය හැකි බව මම දනිමි, නමුත් මම තව ටිකක් යමක් සොයමි.


6
විනෝද සටහන: අනුක්‍රමික වරායන් සහ අනුක්‍රමිකකරණය අතර, මෙම ප්‍රශ්නය සෙවීම පාහේ කළ නොහැක්කකි.
ඩේවිඩ්

නීරස වීමට ... එය සෙවීම ඉතා පහසුය. අදාළ පහර කට්ටලයක් ලබා ගැනීම තරමක් දුෂ්කර ය. :) (විශාල ප්‍රශ්නයක් සඳහා +1)
කොන්රාඩ් විල්ටර්ස්ටන්

Answers:


452

පවර්ෂෙල් හි විධාන දාම කිරීමට අර්ධ සළකුණක් භාවිතා කරන්න:

ipconfig /release; ipconfig /renew

11
ඒවා සමාන්තරව හෝ අනුක්‍රමිකව ධාවනය වේද?
ටාර්කස්

20
Cmd.exe හි & ක්‍රියාකරු මෙන් මෙය අනුක්‍රමිකව ක්‍රියාත්මක වේ.
මිරිකීම

48
නමුත් විශාල වෙනසක් ඇත - ";" පළමු විධානය අසමත් වුව ද දෙවන විධානය ක්‍රියාත්මක කරයි.
අයිවන්

10
ඉහත සඳහන් කළ පරිදි, මෙය & cmd.exe හි හැසිරීම ද වේ.
මිරිකීම

8
@Rafi ඔව්, උත්සාහ කරන්න {Command-One -ea Stop} Catch {Command-Two}
Ave_J

34

MS-DOS ශෛලියේ විධාන පරිවර්තකයේ ක්‍රියාකරු සමඟ හැසිරීමට ප්‍රධාන වෙනසක් තිබුණද, පෙර පිළිතුරෙහි සඳහන් පරිදි අර්ධ සළකුණක් විධාන සම්බන්ධ කරයි &.

විධාන පරිවර්තකයේදී, රේඛාව කියවන විට විචල්ය ආදේශනය සිදු වේ. අන්තර්වාරයකින් තොරව විචල්‍යයන් මාරු කිරීම වැනි සමහර පිළිවෙලට මෙය ඉඩ දෙයි:

set a=1
set b=2
set a=%b% & set b=%a%
echo %a%
echo %b%

ප්‍රති result ලය වනු ඇත්තේ:

2
1

මා දන්නා පරිදි, පවර්ෂෙල් හි මෙම හැසිරීම අනුකරණය කිරීමට ක්‍රමයක් නොමැත. සමහරු එය හොඳ දෙයක් යැයි තර්ක කළ හැකිය.

පවර්ෂෙල් හි ඇත්ත වශයෙන්ම මෙය කිරීමට ක්‍රමයක් තිබේ:

$b, $a = $a, $b

එහි ප්‍රති result ලය වනුයේ විචල්ය අගයන් තනි පේළියක් මාරු කිරීමයි.


කෙටිමං තුළ
-command

3

පවර්ෂෙල් 7 හි, Pipeline chain operatorsඔබගේ අනුක්‍රමික එක්-පේළි විධානයන්ට කොන්දේසි සහිත අංගයක් එක් කිරීමට ඔබට ඉඩ සලසයි

ක්රියාකරුවන් වන්නේ:

  • && මෙය දෙවන විධානය ක්‍රියාත්මක කරන්නේ පළමු එක සාර්ථක වුවහොත් පමණි.
  • || මෙය දෙවන විධානය ක්‍රියාත්මක කරන්නේ පළමු විධානය අසමත් වුවහොත් පමණි.

උදාහරණ:

PS Z:\Powershell-Scripts> Write-Host "This will succeed" && Write-Host "So this will run too"
This will succeed
So this will run too

PS Z:\Powershell-Scripts> Write-Error "This is an error" && Write-Host "So this shouldn't run"
Write-Error "This is an error" && Write-Host "So this shouldn't run": This is an error

PS Z:\Powershell-Scripts> Write-Host "This will succeed" || Write-Host "This won't run"
This will succeed

PS Z:\Powershell-Scripts> Write-Error "This is an error" || Write-Host "That's why this runs"
Write-Error "This is an error" || Write-Host "That's why this runs": This is an error
That's why this runs

ඇත්ත වශයෙන්ම ඔබට ඒවා වැනි තවත් එකට දම්වැල් දැමිය හැකිය x && y || z.

මෙය පැරණි cmd වැනි විධාන සඳහාද ක්‍රියා කරයි ipconfig

PS Z:\Powershell-Scripts> ipconfig && Write-Error "abc" || ipconfig


Windows-IP-Konfiguration


Ethernet-Adapter Ethernet:

   Verbindungsspezifisches DNS-Suffix: xxx
   Verbindungslokale IPv6-Adresse  . : xxx
   IPv4-Adresse  . . . . . . . . . . : xxx
   Subnetzmaske  . . . . . . . . . . : 255.255.255.0
   Standardgateway . . . . . . . . . : xxx
ipconfig && Write-Error "abc" || ipconfig: abc

Windows-IP-Konfiguration


Ethernet-Adapter Ethernet:

   Verbindungsspezifisches DNS-Suffix: xxx
   Verbindungslokale IPv6-Adresse  . : xxx
   IPv4-Adresse  . . . . . . . . . . : xxx
   Subnetzmaske  . . . . . . . . . . : 255.255.255.0
   Standardgateway . . . . . . . . . : xxx

මෙම ක්‍රියාකරුවන් $ භාවිතා කරයි? සහ නල මාර්ගයක් අසමත් දැයි තීරණය කිරීම සඳහා $ LASTEXITCODE විචල්‍යයන්. මෙය cmdlets හෝ ශ්‍රිත සමඟ පමණක් නොව ස්වදේශීය විධානයන් සමඟ භාවිතා කිරීමට ඔබට ඉඩ සලසයි.

මුලාශ්‍රය: https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-70?view=powershell-7


වැඩ කරන්නේ නැහැ. මම බලයෙන් උත්සාහ කළෙමි: විචක්ෂණශීලී විනාශය -f && vagrant up. වැඩ කරන්නේ නෑ.
බැසිල් ඒ

Power බැසිල් ඔබ නවතම අනුවාදය වන පවර්ෂෙල් 7 හි එය උත්සාහ කළාද? ඔබ වැනි ගොඩනංවා නැති විධාන ක්‍රියා නොකරනු ඇත.
සයිමන්ස්

1
As බැසිල් ඒ ලියකියවිලි වල මෙසේ සඳහන් වේ: "මෙම ක්‍රියාකරුවන් නල මාර්ගයක් අසමත් දැයි තීරණය කිරීම සඳහා විචල්‍යයන් $?සහ $LASTEXITCODEවිචල්‍යයන් භාවිතා කරයි . මෙය ඔබට cmdlets හෝ ශ්‍රිත සමඟ පමණක් නොව දේශීය විධානයන් සමඟ භාවිතා කිරීමට ඉඩ දෙයි." එබැවින් ඔබේ දේශීය නොවන විධානයන් මේවා නිවැරදිව සකසා ඇත්දැයි පරීක්ෂා කර බැලිය යුතුය
සිමොන්ස්

හරි, එය පරීක්ෂා කර බලයි. ස්තූතියි.
බැසිල් ඒ

0

ඔබ පවර්ෂෙල් 7 ස්ථාපනය කර ඇත්දැයි තීරණය කිරීම සඳහා, පවර්ෂෙල් විමසුමේදී, පහත සඳහන් දේ ටයිප් කරන්න:

$PSVersionTable

ඔබ පහත සඳහන් දෑ දැකිය යුතුය:

    Name                           Value
    ----                           -----
    PSVersion                      7.0.0
   ... additional output not relevant to this dicsussion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.