Powershell 文件重命名日期/时间

Powershell 文件重命名日期/时间

我使用了以前文章中的脚本并对其进行了少许修改:

Get-ChildItem "c:\test\*.txt" | ForEach-Object {          
Rename-Item $_.FullName "$BackupFolder$($_.BaseName -replace " ", "_" -replace '\..*?$')-$(Get-Date -Format "ddMMyyyy").txt"
}

然而:

当前重命名文件:test-ddmmyy.txt
所需格式:testddmmyy.txt

答案1

这应该可行。

Get-ChildItem "c:\test\*.txt" | ForEach-Object {          
Rename-Item $_.FullName "$BackupFolder$($_.BaseName -replace " ", "_" -replace '\..*?$')$(Get-Date -Format "ddMMyyyy").txt"

您的破折号刚好来自 之前$(Get-Date。请记住,当将双引号中的内容作为参数传递时,任何不是变量或不在括号内且前面带有 的内容$都将被视为字符串字符。

在以下脚本中:

$test='test';"$test-$(Get-Date -F 'ddMMyyyy')"

$test将被扩展为其值'test'-由于它既不是变量也不是表达式的一部分,因此将被保留,并且Get-Date -F 'ddMMyyyy'将被处理并返回其输出,因为它被设置为带有$(...的表达式)。这将导致:

test-24112013

去掉破折号,然后...

$test='test';"$test-$(Get-Date -F 'ddMMyyyy')"

....输出...

test24112013

相关内容