我注意到有多个问题。最重要的是您的新名称值为{ $_.Name -Replace "$_.Name$_.CreationTim" }
。 -replace
的语法是-replace 'PatternToReplace', 'NewValue'
。如果只定义了模式,如-replace 'PatternToReplace'
,则匹配的文本将被删除。
比方说,一个文件名是当前“FILE1.TXT”。这永远不会匹配你的$_.Name$_.CreationTime
-pattern,ex。 “File1.txt23.01.2015 23.15.59”,所以它永远不会替换/修改名称,结果将是您的文件被重命名为它们的当前名称。
另外:
CreationTim
缺少的e
- 在
"$_.Name$_.CreationTim"
,你所访问的性能。要在字符串中包含属性的值,需要使用$()
(如"$($_.Name)$($_.CreationTime)"
)或格式运算符(如"{0}{1}" -f $_.Name, $_.CreationTime
- )您使用
-Recurse
,这意味着您期望子文件夹。文件夹也将被重新命名,当文件的路径不再存在时(父文件夹被重命名),稍后可能会导致错误。
Name
-property包含扩展名,所以如果您已经使用了-replace
命令,那么“File1.txt”将变为“File1.txt23.01.2015 23.15.59”。没有扩展名的文件。要分别获取文件名和扩展,使用BaseName
- 和Extension
-Properties
我觉得这是你要找的是什么:
Function RenameFolderFiles{
Param([String]$path)
Get-Childitem $path -Recurse |
#Get files only
Where-Object { !$_.PSIsContainer } |
Rename-Item -NewName { "{0}{1}{2}" -f $_.BaseName, $_.CreationTime.ToString('ddMMyyyy-hhmmss'), $_.Extension }
}
演示:
#Files before
Get-ChildItem -Recurse "C:\Users\Frode\Desktop" | Where-Object { !$_.PSIsContainer } | Select-Object -ExpandProperty FullName
C:\Users\Frode\Desktop\New Text Document - Copy (2).txt
C:\Users\Frode\Desktop\New Text Document - Copy.txt
C:\Users\Frode\Desktop\New Text Document.txt
C:\Users\Frode\Desktop\test\asd - Copy.txt
C:\Users\Frode\Desktop\test\asd.txt
#Create and run function
Function RenameFolderFiles{
Param([String]$path)
Get-Childitem $path -Recurse |
#Get files only
Where-Object { !$_.PSIsContainer } |
Rename-Item -NewName { "{0}{1}{2}" -f $_.BaseName, $_.CreationTime.ToString('ddMMyyyy-hhmmss'), $_.Extension }
}
RenameFolderFiles -path "C:\Users\Frode\Desktop"
#Files after
Get-ChildItem -Recurse "C:\Users\Frode\Desktop" | Where-Object { !$_.PSIsContainer } | Select-Object -ExpandProperty FullName
C:\Users\Frode\Desktop\New Text Document - Copy (2)01022015-122544.txt
C:\Users\Frode\Desktop\New Text Document - Copy01022015-122543.txt
C:\Users\Frode\Desktop\New Text Document01022015-121535.txt
C:\Users\Frode\Desktop\test\asd - Copy01022015-122532.txt
C:\Users\Frode\Desktop\test\asd01022015-122531.txt
CreationTim或CreationTime - 错字? – JohnLBevan 2015-01-31 23:34:39