Это должно работать.
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