我使用了以前文章中的脚本并对其进行了少许修改:
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