![Powershell 文件重命名日期/时间](https://linux22.com/image/1375927/Powershell%20%E6%96%87%E4%BB%B6%E9%87%8D%E5%91%BD%E5%90%8D%E6%97%A5%E6%9C%9F%2F%E6%97%B6%E9%97%B4.png)
我使用了以前文章中的脚本并对其进行了少许修改:
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