Получить дату создания в формате - PullRequest
0 голосов
/ 23 мая 2018

Я хочу зациклить изображения и переместить каждое в папку с датой создания, но мне кажется, что я не вижу смысла в том, как отформатировать полученную строку даты и времени, а также, возможно, как ChildItem работает ...

Я намереваюсь создать переменную, содержащую правильную отформатированную строку даты создания «2017-03-06», чтобы я мог создать каталог с этим именем и переместить туда файл.Это должно происходить в цикле (for, foreach, ...).

$files = Get-ChildItem "P:\photos\"

for ($i=0; $i -lt $files.Count; $i++) {
    $outfile = $files[$i].FullName
    Write-Host "file: " $outfile
    $CreationDateStr = Get-ChildItem  $files[$i].CreationTime |
                       Get-Date -f "yyyy-MM-dd"
    Write-Host "file creation time: " $CreationDateStr
}

Read-Host -Prompt "Press Enter to exit"

Это не работает, и код неправильный:

Get-ChildItem: диск не найден.Не диск с именем «03.06.2017 07»

Это работает, но его нужно отформатировать:

$files[$i].CreationTime

Время создания файла: 06.03.201707:53:21

1 Ответ

0 голосов
/ 23 мая 2018

Мы не рекомендуем Write-Host, потому что вы не можете перенаправить его.

Вот что, я думаю, вы ищете:

Get-ChildItem "P:\Photos" | ForEach-Object {
  $dirName = "{0:yyyy-MM-dd}" -f $_.CreationTime
  if ( -not (Test-Path $dirName -PathType Container) ) {
    [Void] (New-Item $dirName -ItemType Directory)
  }
  Move-Item $_ $dirName -WhatIf
}

Итак, в цикле мы проверяемесли указанный каталог не существует (создайте его, если он не существует), затем переместите файл в новый каталог.Удалите -WhatIf, если код делает то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...