Создание нескольких папок с датами и т. Д. С 190101 по 191231 - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь создать несколько папок, но для дат в год. Кроме того, я использую PowerShell и пытаюсь создать пакетный скрипт. Я пробовал несколько решений, но никто из них не дает мне то, что мне нужно. Итак, мне нужно создать папки с 190101 по 191231 пустыми один раз за весь год. Но что бы я ни делал, я не получаю то, что хочу.

Примеры:

01..31 | foreach $_{ New-Item -ItemType Directory -Name $("1901" + $_)}

mkdir $(01..31 | %{"ch$_"})

md(01..31|%{"1901$_"})

Но проблема здесь, они не дают мне 0 в "дни", так что у меня есть 19011 вместо 190101.

Я не могу найти, как извлечь даты и нажать PowerShell, чтобы создать то, что мне нужно.

Ответы [ 3 ]

0 голосов
/ 07 января 2019

немного более обобщенная версия, которая будет работать в течение любого месяца. оператор -f формата строки очень удобен ... [ ухмылка ]

$Today = (Get-Date).Date
$Year = $Today.Year
$Month = $Today.Month
$DaysInMonth = (Get-Culture).Calendar.GetDaysInMonth($Year, $Month)

foreach ($Day in 1..$DaysInMonth)
    {
    '{0}{1:D2}' -f $Today.ToString('yyMM'), $Day
    }

усеченный вывод ...

190101
190102
[*...snip...*] 
190130
190131
0 голосов
/ 07 января 2019

Один способ создания папок на каждый день года

  • определить / получить год
  • установить дату начала 1 января
  • для получения нулевого смещения получите DayOfYear на 30 декабря
  • использовать диапазон для AddDays для начала и повторения

$year = (Get-Date).Year
$startdate = Get-Date -Year $year -Month 1 -Day 1
0..(Get-Date -Year $year -Month 12 -Day 30).DayOfYear| ForEach-Object{
  mkdir ($startdate.AddDays($_).ToString('yyMMdd')
)
0 голосов
/ 07 января 2019

Используйте оператор формата (-f). Это было сделано именно для этой цели.

1..31 | ForEach-Object {
    New-Item -Type Directory -Name ('1901{0:d2}' -f $_)
}
...