Friday Fun: มีใครรู้บ้างว่าตอนนี้กี่โมงแล้ว?
ไม่มี cmdlet สำหรับสิ่งเหล่านี้ ดังนั้นคุณจะต้องพึ่งพาเทคนิค .NET บางอย่าง แต่ไม่ต้องกังวล คุณไม่จำเป็นต้องละทิ้งการเป็นผู้เชี่ยวชาญด้านไอที ขั้นตอนนั้นง่ายมาก แม้ว่าจะดูแปลกไปสำหรับคุณก็ตาม ก่อนอื่น มาดูวันในสัปดาห์กันก่อน สิ่งเหล่านี้ถูกเก็บไว้อย่างดีในคลาส .NET ที่เรียกว่า DayOftheWeek ซึ่งเป็น Enum นั่นเป็นเพียงวิธีการพูด "รายการ" ที่หรูหรา ต่อไปนี้คือวิธีที่คุณสามารถแสดงรายการ "รายการ"
PS C:\> [enum]::GetValues([dayofweek])
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturdayค่อนข้างเท่ห์ ฉันไม่มีระบบที่ใช้ PowerShell ในภาษาอื่น แต่ฉันคิดว่าคุณค่าเหล่านี้จะสะท้อนถึงวัฒนธรรมของคุณ เท่าที่ฉันรู้สิ่งนี้ควรจะใช้ได้กับ PowerShell เวอร์ชันใดก็ได้ คุณสามารถทำอะไรกับสิ่งนี้? บางทีคุณอาจต้องการโฟลเดอร์สำหรับแต่ละวันในสัปดาห์
[enum]::GetValues([dayofweek]) | foreach {
mkdir "c:\work\$_"
}ฉันนำแต่ละค่าและเพิ่มลงใน C:\Work เพื่อสร้างโฟลเดอร์รายวันที่เกี่ยวข้อง ต่อไป มาดูวิธีดำเนินการกับชื่อเดือนกัน
ขออภัย ไม่มีคลาส Enum สำหรับชื่อเดือน แต่ข้อมูลเป็นส่วนหนึ่งของคลาสโลกาภิวัตน์ที่สอดคล้องกับวัฒนธรรมคอมพิวเตอร์ของคุณ นี่คือวิธีการทำงานสำหรับฉัน
PS C:\> [System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames
January
February
March
April
May
June
July
August
September
October
November
December
ขอย้ำอีกครั้งว่าระบบที่ไม่ใช่ภาษาอังกฤษควรได้รับเดือนในภาษาของคุณ มีข้อบกพร่องเล็กน้อยประการหนึ่งเกี่ยวกับเรื่องนี้ ด้วยเหตุผลบางอย่าง จึงมีเดือนที่ 13 ลึกลับที่ไม่มีชื่อ
PS C:\> [System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames | measure
Count : 13
Average :
Sum :
Maximum :
Minimum :
Property : หากต้องการแก้ไขปัญหานี้ เพียงกรองค่าต่างๆ
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames | where {$_} เราสามารถใช้เทคนิคเดียวกันนี้เพื่อสร้างชุดโฟลเดอร์รายเดือนได้เช่นกัน
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames |
where { $_ } | foreach -begin { mkdir C:\Work\2014 } -process {
mkdir "c:\work\2014\$_"
}ฉันส่งชื่อแต่ละเดือนไปที่ ForEach-Object ในการเริ่มต้น scriptblock ฉันได้สร้างโฟลเดอร์ปีระดับบนสุดและในกระบวนการ scriptblock โฟลเดอร์สำหรับแต่ละเดือน หรือบางทีคุณอาจต้องการหลีกเลี่ยงค่าฮาร์ดโค้ดเช่น 2014 หรือรวมปีไว้ในชื่อโฟลเดอร์
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames |
where { $_ } |
foreach -begin {$yr = (Get-Date).year} -process { mkdir "c:\work\$_`_$yr" }ที่นี่ฉันได้รับปีปัจจุบันในบล็อก Begin แล้วต่อท้ายชื่อโฟลเดอร์ หากฉันเรียกใช้วันนี้ ฉันจะได้โฟลเดอร์เช่น C:\Work\January_2013 โปรดทราบว่าเนื่องจากฉันใช้ขีดล่าง ฉันจึงต้องหลีกเลี่ยงมัน
สุดท้ายนี้ หากคุณต้องการใช้เดือนแบบย่อ คุณก็สามารถทำได้เช่นกัน
[System.Globalization.DateTimeFormatInfo]::CurrentInfo.AbbreviatedMonthNames |
where { $_ } |
foreach -begin {$yr = (Get-Date).year} -process { mkdir "c:\work\$_`_$yr" }ที่นี่คุณต้องกรองเดือนว่างลึกลับออกเช่นกัน
ดังนั้นวางแผนล่วงหน้าสำหรับปีหน้าและหวังว่ามันจะเป็นปีที่ดีสำหรับคุณ
