1

Я использовал скрипт из предыдущего поста и немного его изменил:

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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .