0

カレンダーの現在の月をプレーン テキストでクリップボードまたは Windows 環境のコマンドにすばやく印刷する方法について何か提案はありますか? ここで明確にするために、Windows タスクバーの時計を 1 回クリックしたときに表示されるものと同様に、完全に印刷された月を表示したいと思います。軽量の PowerShell スクリプトに沿って考えているか、これを簡単に実行できるパッケージ化された Windows アプリケーション機能が他にあるかもしれません。

4

3 に答える 3

4

これを試してください:

function Get-Calendar($year=(Get-Date).Year,$month=(Get-Date).Month){
    $dtfi = New-Object System.Globalization.DateTimeFormatInfo
    $AbbreviatedDayNames=$dtfi.AbbreviatedDayNames | ForEach-Object {" {0}" -f $_.Substring(0,2)}

    $header= "$($dtfi.MonthNames[$month-1]) $year"
    $header=(" "*([math]::abs(21-$header.length) / 2))+$header
    $header+=(" "*(21-$header.length))

    Write-Host $header -BackgroundColor yellow -ForegroundColor black
    Write-Host (-join $AbbreviatedDayNames) -BackgroundColor cyan -ForegroundColor black
    $daysInMonth=[DateTime]::DaysInMonth($year,$month)

    $dayOfWeek =(New-Object DateTime $year,$month,1).dayOfWeek.value__
    $today=(Get-Date).Day

    for ($i = 0; $i -lt $dayOfWeek; $i++){Write-Host (" "*3) -NoNewline}
    for ($i = 1; $i -le $daysInMonth; $i++)
    {
        if($today -eq $i){Write-Host ("{0,3}" -f $i) -NoNewline -BackgroundColor red -ForegroundColor white}
        else {Write-Host ("{0,3}" -f $i) -NoNewline -BackgroundColor white -ForegroundColor black}

        if ($dayOfWeek -eq 6) {Write-Host}
        $dayOfWeek = ($dayOfWeek + 1) % 7
    }
    if ($dayOfWeek -ne 0) {Write-Host}
}

PS> Get-Calendar

    January 2013
 Su Mo Tu We Th Fr Sa
        1  2  3  4  5
  6  7  8  9 10 11 12
 13 14 15 16 17 18 19
 20 21 22 23 24 25 26
 27 28 29 30 31
于 2013-01-03T12:28:07.397 に答える
1
new-alias  Out-Clipboard $env:SystemRoot\system32\clip.exe
(get-date -Format MMMM) |Out-Clipboard
于 2013-01-03T12:57:14.753 に答える
0

カレンダー(線形の日付を日/月/年に分割するシステム)には、現在のものがありません。

ただし、特定のカレンダーで月を取得する場合は、.NETで選択したカレンダーを組み込むものDateTimeを指定することを検討する必要があります。CultureInfo

$d = Get-Date
$d.ToString('MMMM', [System.Globalization.CultureInfo]::CurrentCulture)

CultureInfoカスタムまたは(より一般的には)インスタンスを作成DateTimeFormatInfoし、の2番目のパラメーターとして渡す方法はいくつかありますDateTime.ToString()

最も簡単なアプローチはCultureInfo、ターゲットカレンダーを使用するインスタンスを取得することです。例:

$ci = [System.Globalization.CultureInfo]::CreatedSpecifiedCulture('jp-jp')

MSDNには、カレンダーの操作に関するページ全体があります:http: //msdn.microsoft.com/en-us/library/82aak18x%28v=vs.100%29.aspx(これは、PowerShell3の.NET4バージョンです)。

于 2013-01-03T12:13:15.710 に答える