none
Powershell создание папки в формате ггггммдд вчерашним днём RRS feed

  • Вопрос

  • Здравствуйте.

    Пишу скрипт где одно из действий это создание папки в формате ггггммдд

    ггггг - это год

    мм - это месяц

    дд - это день

    Часть скрипта:

    $reportFolder = "D:\script\test"
    $year = get-date -format yyyy
    $month = get-date -format MM
    $folder = $reportFolder + "\" + $year + "\" + $month
    $a = Get-Date -format yyyyMMdd
    New-Item -Path $folder\$date -ItemType "directory"

    Подскажите пожалуйста как сделать так, чтоб скрипт при исполнение создавал папку вчерашним днём?

Ответы

  • md ("$reportFolder\$year\$month\" +(Get-Date).AddDays(-1).ToString("yyyyMMdd")) -force
    • Изменено KazunEditor 6 июня 2013 г. 13:53
    • Помечено в качестве ответа Kalaputsa 7 июня 2013 г. 4:56
    6 июня 2013 г. 13:51
    Отвечающий
  • И последний вопросик:

    можно ли это выражение загнать в переменную - (Get-Date).AddDays(-1).ToString("yyyyMMdd"))

    Конечно, что мешает.

    PS > $df =  (Get-Date).AddDays(-1).ToString("yyyyMMdd")
    PS > $df
    20130606

    • Помечено в качестве ответа Kalaputsa 7 июня 2013 г. 6:46
    Отвечающий

Все ответы

  • md (Get-Date).AddDays(-1).ToString("yyyyMMdd")
    Отвечающий
  • создаёт только до месяца. Саму папку дня не создаёт :(
  • создаёт только до месяца. Саму папку дня не создаёт :(

    md ("$reportFolder\" +(Get-Date).AddDays(-1).ToString("yyyy\\MM\\dd")) -force

    Отвечающий
  • При

    md (Get-Date).AddDays(-1).ToString("yyyyMMdd")

    Папки создаются в двух местах одна в профиле C:\Users\%USERNAME%\20130605

    другая в тестовой папке, но с сегодняшней датой D:\script\test\2013\06\20130606 :(

    При

    md ("$reportFolder\" +(Get-Date).AddDays(-1).ToString("yyyy\\MM\\dd")) -force

    Создаётся в тестовой папке D:\script\test\2013\06\ но появляются две папки одна 05 другая 20130606

    P.S. В первом посте ошибка в переменных $a и $date за это извините, что ввёл в заблуждение.

    6 июня 2013 г. 13:19
  • Зачем выполнять две команды, когда надо выполнить только одну:

    md ("$reportFolder\" +(Get-Date).AddDays(-1).ToString("yyyy\\MM\\dd")) -force
    
    
    PS > md ("$reportFolder\" +(Get-Date).AddDays(-1).ToString("yyyy\\MM\\dd")) -force
    
    
        Directory: D:\script\test\2013\06
    
    
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    d----        06.06.2013     17:35            05

    6 июня 2013 г. 13:37
    Отвечающий
  • Я одну и выполняю :)

    Одна не подошла начил колдовать со второй :)

    6 июня 2013 г. 13:39
  • Я одну и выполняю :)

    Одна не подошла начил колдовать со второй :)

    Конечный путь в каком виде должен быть?

    6 июня 2013 г. 13:44
    Отвечающий
  • если прыгать от сегодняшней даты, то D:\script\test\2013\06\20130605 - вот так должно выглядеть.
    6 июня 2013 г. 13:46
  • md ("$reportFolder\$year\$month\" +(Get-Date).AddDays(-1).ToString("yyyyMMdd")) -force
    • Изменено KazunEditor 6 июня 2013 г. 13:53
    • Помечено в качестве ответа Kalaputsa 7 июня 2013 г. 4:56
    6 июня 2013 г. 13:51
    Отвечающий
  • И последний вопросик:

    можно ли это выражение загнать в переменную - (Get-Date).AddDays(-1).ToString("yyyyMMdd"))

  • И последний вопросик:

    можно ли это выражение загнать в переменную - (Get-Date).AddDays(-1).ToString("yyyyMMdd"))

    Конечно, что мешает.

    PS > $df =  (Get-Date).AddDays(-1).ToString("yyyyMMdd")
    PS > $df
    20130606

    • Помечено в качестве ответа Kalaputsa 7 июня 2013 г. 6:46
    Отвечающий