Вызовите значение массива с помощью цикла for - PullRequest
0 голосов
/ 25 ноября 2018

Я нашел этот код в переполнении стека:

setlocal enableDelayedExpansion
set /a count=0

for /f %%G in ('dir *.jpg /b') do (
   set /a count+=1
   set fileName[!count!]=%%~G
)

set fileName

Моя цель - вызвать одно значение, например, set fileName[1], которое возвращает конкретное значение массива, но мне бы хотелосьЯ мог бы взять значение, определить длину пути и изменить дату создания между этим кодом:

$(Get-Item foo.txt).creationtime=$(Get-Date "11/24/2015 06:00 am")

Все это в цикле for, который возвращает то же значение count (которое было всеми моими файлами jpg вактуальный каталог).Это потому, что я должен переименовать все мои файлы jpg и собрать дату по имени (они имеют весь формат: IMG-20151228-WA0002) и изменить дату создания.Это возможно?

1 Ответ

0 голосов
/ 26 ноября 2018
## Q:\Test\2018\11\25\SO_53471858.ps1
## create a dumy dummy file
"" >IMG-20151228-WA0002.jpg

## check datetime
gci IMG-*-*.jpg|select Name,CreationTime,LastWriteTime,LastAccessTime

## a variant of the one liner from comment without aliases
Get-ChildItem IMG-*-*.jpg |
  Where-Object BaseName -match 'IMG-(\d{8})-*' |
    ForEach-Object{
      $_.CreationTime = [datetime]::ParseExact($Matches[1],'yyyyMMdd',$Null)
    }

## check datetime
gci IMG-*-*.jpg|select Name,CreationTime,LastWriteTime,LastAccessTime

> Q:\Test\2018\11\25\SO_53471858.ps1

Name                    CreationTime        LastWriteTime       LastAccessTime
----                    ------------        -------------       --------------
IMG-20151228-WA0002.jpg 2018-11-26 01:31:47 2018-11-26 01:38:34 2018-11-26 01:31:51
IMG-20151228-WA0002.jpg 2015-12-28 00:00:00 2018-11-26 01:38:34 2018-11-26 01:38:34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...