用for循环调用数组值

时间:2018-11-25 20:53:08

标签: powershell batch-file

我在堆栈溢出中找到了以下代码:

setlocal enableDelayedExpansion
set /a count=0

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

set fileName

我的目标是调用单个值,例如集合fileName[1],该值返回数组的特定值,但我希望我可以采用该值,标识路径名长度并在此之间修改创建日期代码:

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

所有这些都在for循环中返回相同的count值(这是我在实际目录中的所有jpg文件)。 那是因为我必须重命名我所有的jpg文件并按名称收集日期(它们具有所有格式:IMG-20151228-WA0002)并修改创建日期。 这有可能吗?

1 个答案:

答案 0 :(得分:0)

## 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