2016-06-16 3 views
0

У меня есть различные ошибки, когда я пытаюсь формат строки:Почему заполнители не заменяются должным образом в моих строках?

$dir = "c:\path" 
$logfile = "$dir\logfile_{0}.txt" -f (get-date -format "yyyymmdd_hhmmtt") 

Function Log($message) { 
    $message = "{0}: {1}" -f (get-date) $message 
    write-host $message 
} 

Log "Start processing {0}" -f ($_.FullName) 

Я ожидаю $logfile быть c:\path\logfile_20160616_121012.txt, но вместо этого я получаю форматы, такие как c:\path\logfile_20160116_1201nachm.

Я ожидаю Log к выходу 16.06.2016 12:01:20 Start Processing Myfile.xlsx, но вместо этого я получаю 16.06.2016 12:01:20 Start Processing 16.06.2016 12:01:20

Что я делаю неправильно?

ответ

1

tt в конце вашей строки даты форматирования yyyymmdd_hhmmtt, является AM/PM целеуказатель.

Основываясь на полученном вами выходе, вы, вероятно, работаете на ОС с немецким языком (Nachmittag = PM).

Если вы хотите использовать секунды, используйте вместо этого ss. Без обозначения AM/PM вы, вероятно, должны переключиться на использование 24-часового времени (замените hh на HH).

Вы можете поместить строку формата даты в заполнителе:

"$dir\logfile_{0:yyyymmdd_HHmmss}.txt" -f (Get-Date) 

В функции Log, следует помнить, что аргументы оператора -f должен быть разделены запятой.

+1

Возможно, хотите использовать '' $ dir \ logfile_ {0: yyyymmdd_HHmmss} .txt ". 24-часовое время работает намного лучше. –

1
  1. Вы пытаетесь получить доступ к переменной трубопровода в последней строке ($_.FullName), но вы не используете какой-либо трубопровод там. Вы также должны поместить формат туда в скобках, прежде чем передать строку в функцию Log.

  2. Вы пропускаете запятую в параметрах формата в вашей Log функции:

    $dir = "c:\path" 
    $logfile = "$dir\logfile_{0}.txt" -f (get-date -format "yyyymmdd_hhmmtt") 
    
    Function Log($message) { 
        $message = "{0}: {1}" -f (get-date), $message 
        write-host $message 
    } 
    
    Log ("Start processing {0}" -f $logfile) 
    
+0

Спасибо, это частично помогает. Тем не менее, я все еще получаю странное имя файла для файла журнала. Есть предположения? – Pr0no

+0

Я получаю это имя файла журнала: 'c: \ path \ logfile_20163316_1233.txt', который, вероятно, является тем, что вы ожидаете? –

+0

Да. Странно ... Я продолжаю получать это странное имя файла. Возможно, что-то еще не так. – Pr0no

Смежные вопросы