我在堆栈溢出中找到了以下代码:
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)并修改创建日期。 这有可能吗?
答案 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