none
Помогите с регулярным выражением \ PowerShell RRS feed

  • Вопрос

  • Всем привет!

    $DTime = Get-Date -UFormat %T 
    $test = "34124~" + $Dtime + "~1312312"

    PS > 34124~15:16:18~1312312

    нужно выражение, с помощью которого я прочту переменную с 7 по 8 символ (только сколько часов) и в условии буду использовать как 

    if ($time > '05' ) {...} else {...}

    и сразу еще один, правильно ли будет это?

    if ($fls -ne $null -and $time > '05') {..} else {...}

    Спасибо!

    5 октября 2012 г. 11:20

Ответы

  • $test.Substring(6,2) - спасибо, сам нашел)))
    • Помечено в качестве ответа KazunEditor 5 октября 2012 г. 12:11
    5 октября 2012 г. 11:26
  • cls
    $t = Get-Date -UFormat %H
    if ($t -ge 5) {echo 'больше'} else {echo 'меньше'}

    не работает верно.... почему он считает переменную $t меньше этого,  время сейчас 12)))

    Как я уже выше писал,сравниваются строки ,а не числовые значения. Поэтому добавить [int] на выбор:

    1) [int]$t = Get-Date -UFormat %H

    2)if ([int]$t -ge 5)

    • Помечено в качестве ответа JabBaton 8 октября 2012 г. 8:55
    8 октября 2012 г. 8:31
    Отвечающий

Все ответы

  • $test.Substring(6,2) - спасибо, сам нашел)))
    • Помечено в качестве ответа KazunEditor 5 октября 2012 г. 12:11
    5 октября 2012 г. 11:26
  • Легче использовать Get-Date:

    PS Z:\> $DTime = Get-Date PS Z:\> $DTime.ToString("HH") 15 PS Z:\> $DTime.ToShortTimeString() 15:33 PS Z:\> $DTime.ToLongTimeString() 15:33:10

    Про операторы сравнения:

    Get-Help about_Comparison_Operators

    if ($fls -ne $null -and $time > '05') {..} else {...} - Лучше сравнивать,как числа,а знак > заменить на -gt

    if ($fls -and [int]$time -gt 5) {..} else {...}

    5 октября 2012 г. 11:44
    Отвечающий
  • Про время, у меня идет проверка существования файла в папке если есть, и время у него больше 5 часов утра, тогда не создавать, в противном случае создается
    5 октября 2012 г. 11:46
  • Про время, у меня идет проверка существования файла в папке если есть, и время у него больше 5 часов утра, тогда не создавать, в противном случае создается

    В любом случае у файла время записано в формате DateTime. Так что вы могли легко выбрать Hour и сравнивать его.

    $file = get-item C:\file.txt
    $file.CreationTime.Hour


    Vladimir Zelenov | http://systemcenter4all.wordpress.com


    5 октября 2012 г. 13:57
  • cls
    $t = Get-Date -UFormat %H
    if ($t -ge 5) {echo 'больше'} else {echo 'меньше'}

    не работает верно.... почему он считает переменную $t меньше этого,  время сейчас 12)))

    8 октября 2012 г. 8:27
  • cls
    $t = Get-Date -UFormat %H
    if ($t -ge 5) {echo 'больше'} else {echo 'меньше'}

    не работает верно.... почему он считает переменную $t меньше этого,  время сейчас 12)))

    Как я уже выше писал,сравниваются строки ,а не числовые значения. Поэтому добавить [int] на выбор:

    1) [int]$t = Get-Date -UFormat %H

    2)if ([int]$t -ge 5)

    • Помечено в качестве ответа JabBaton 8 октября 2012 г. 8:55
    8 октября 2012 г. 8:31
    Отвечающий