यदि पॉवरशेल कमांड विभाजक है; (अर्धविराम), “तिथि” क्यों है; dir ”dir आउटपुट को अतिरिक्त विवरण बनाते हैं?


11

मैं समझता हूं कि पॉलीशेल में अर्धविराम एक कमांड विभाजक है। echo "hello"; dirयह आउटपुट देता है।

PS C:\> echo "hello"; dir
hello

Directory: C:\

Mode         LastWriteTime     Length Name
----         -------------     ------ ----
d-----       2018-04-29 13:02         BCD_Backup
d-----       2018-12-02 14:08         Dell
<snip>

लेकिन date; dirयह आउटपुट क्यों देता है ?

PS C:\> date; dir

Friday, December 14, 2018 11:14:23

PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\BCD_Backup
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName       : BCD_Backup
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : True
Name              : BCD_Backup
FullName          : C:\BCD_Backup
Parent            :
Exists            : True
Root              : C:\
Extension         :
CreationTime      : 2018-04-29 13:02:31
CreationTimeUtc   : 2018-04-29 11:02:31
LastAccessTime    : 2018-04-29 13:02:31
LastAccessTimeUtc : 2018-04-29 11:02:31
LastWriteTime     : 2018-04-29 13:02:31
LastWriteTimeUtc  : 2018-04-29 11:02:31
Attributes        : Directory
Mode              : d-----
BaseName          : BCD_Backup
Target            : {}
LinkType          :


PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Dell
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\
<snip>

दिलचस्प सवाल। मुझे आशा है कि इसका उत्तर मिल जाएगा, क्योंकि मुझे खुद कोई पता नहीं है, और मैं अपने तरीके से शक्तियों के बारे में जानता हूं।
LPChip


1
मुझे लगता है कि यह बीयूजी लगातार आदेशों के लिए एक ही हेडर नहीं डालने के लिए आउटपुट / स्थगित करने के लिए पावरशेल्स सुविधा का परिणाम है और काफी लंबे समय से मौजूद है।
लोटपिंग्स

@LotPings - जो आकर्षक है वह यह है कि Get-ChildItem के पास ऐसा कोई विकल्प नहीं है जो आउटपुट उत्पन्न करता हो कि> दिनांक; Get-ChildItem में परिणाम।
माइकल

सहमत हूँ, मैं भी उत्सुक हूँ कि आखिर क्या किया जाता है date। यह एक उपनाम नहीं है और न ही एक cmdlet या .exe फ़ाइल (PSv6 BTW में एक ही मुद्दा)
लॉटिंग्स

जवाबों:


2

चूंकि पावरशेल एक-एक करके स्टेटमेंट्स को निष्पादित करता है, मुझे लगता है, यह पहले स्टेटमेंट के आउटपुट फॉर्मेटिंग को बाद के सभी स्टेटमेंट्स पर लागू करता है।

जैसा कि Get-Dateएक DateTimeप्रकार की वस्तु देता है , यह सूची के रूप में स्वरूपित हो जाती है, जो आपके 'dir' आउटपुट को प्रभावित करती है।

आप Get-Date'फॉर्मेट' विकल्प का उपयोग करके रिटर्न के प्रकार को बदलकर इस धारणा का परीक्षण कर सकते हैं :

date -Format yyyy-MM-dd ; dir

(यह 'dir' के लिए डिफ़ॉल्ट आउटपुट का उत्पादन करेगा)

या डिफ़ॉल्ट आउटपुट स्वरूपण को बदलकर इसे पाइपलाइन करके Format-Table:

 date | Format-Table ; dir

0

यह केवल तब होता है जब आप दिनांक का उपयोग करते हैं; अन्य पीएस cmdlets सहित 'लगभग कुछ और' के बाद (बस कुछ ही कोशिश की)।

टाइप की गई तारीख 'कोर विंडोज' (जैसे कि cmd.exe) को वापस लाने के लिए प्रतीत होता है कि डेटास्ट्रेग वापस लेने के लिए, PowerShell उस स्ट्रिंग के साथ कुछ करने की कोशिश कर रहा है जो यह प्रतीत होता है।

यदि आप इसे 'कुछ भी' कहते हैं, तो तारीख इस विषमता को प्रदर्शित नहीं करती है। यह सिर्फ यह करता है ...

 dir;date


    Directory: D:\Scripts


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         9/1/2018   2:12 PM                .vscode
d-----         7/3/2018   4:44 PM                CheckURI

....


DisplayHint : DateTime
Date        : 12/14/2018 12:00:00 AM
Day         : 14
DayOfWeek   : Friday
DayOfYear   : 348
Hour        : 14
Kind        : Local
Millisecond : 516
Minute      : 42
Month       : 12
Second      : 22
Ticks       : 636803953425164049
TimeOfDay   : 14:42:22.5164049
Year        : 2018
DateTime    : Friday, December 14, 2018 2:42:22 PM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.