2017-01-24 1 views
0

私は、年、ファイルパス、およびdayoftheweekを入力した後にスクリプトを作成しようとしています。指定した月の最初の日に、毎月1つのフォルダを作成します。したがって、ユーザーが「水曜日」に入れると、毎月の最初の水曜日の日付が検索され、フォルダが作成されます。PSスクリプトを使用した月間のフォルダ

入力例は次のようになります。

New-DayOfWeekFolders -parentPath c:\temp -year 2017 -dayOfWeek wednesday 

私はそれと間違って十分にある知っている(私はスクリプトとひどいよ)しかし、ここで私が今持っているものです。

function NewMonthlyFolder{ 

    param(
    [string] $ParentPath, 
    [string] $Year, 
    [string] $DayOfWeek 
) 

$start = Get-Date $Year 
$end = Get-Date 
    $day = [enum]::Parse([type]"System.DayOfWeek", $DayOfWeek) 

    While($start.DayOfWeek -ne $day) 
    { 
     $start = $start.AddDays(1) 
    } 
    Do 
    { 
     $folderName = $start.ToString("yyyy-MM-dd") 
     New-Item -Path $ParentPath -Name $folderName -ItemType directory 
     $start = $start.AddMonths(1)).AddDays(-1) 
    } While($start -le $end) 
} 
+0

質問は何ですか?あなたは特定の問題を抱えていますか?エラーメッセージ? –

答えて

1

は何かをしてみてくださいこの

[string] $ParentPath="C:\temp" 
[string] $Year="2005" 
[string] $DayOfWeek="lundi" 


$LowerDayOfWeek=$DayOfWeek.ToLower() 

for ($i = 1; $i -lt 13; $i++) 
{ 
    $start = get-date -Year $Year -Month $i -Day 1 

    for ($j = 0; $j -lt 7; $j++) 
    { 
     $currentdate=$start.AddDays($j) 

     if ($currentdate.ToString("dddd") -eq $LowerDayOfWeek) 
     { 
      New-Item -ItemType Directory -path "$ParentPath\$($currentdate.ToString("yyyy-MM-dd"))" -Force 
      break 
     } 
    } 

} 
0

他のソリューションと同様

[string] $ParentPath="C:\temp" 
[string] $Year="2017" 
[string] $DayOfWeek="monday" 

for ($i = 1; $i -lt 13; $i++) 
{ 
    $start = get-date -Year $Year -Month $i -Day 1 
    $daysToFirstCorrectDay = (([Int] [DayOfWeek] $DayOfWeek) - [Int]$start.DayOfWeek + 7) % 7; 
    $NewParth=$start.AddDays($daysToFirstCorrectDay).ToString("yyyy-MM-dd"); 
    New-Item -ItemType Directory -path "$ParentPath\$NewParth" -Force -WhatIf 
} 
関連する問題