$newName = '$Rename_{0:d6}{1}' -f $i , $extension # $rename input cannot be used here
Por que não? Isso definitivamente funciona:
$newName = '{0}_{1:d6}{2}' -f $Rename, $i, $_.Extension
O script abaixo é usado para Renomeação de pasta em massa.
No entanto, eu queria fazer isso como um script genérico para que os usuários pudessem dar entrada e usá-lo de acordo.
Todos estão bem, exceto o c) Novo nome de arquivo a ser renomeado
$Rename = input
$newName = '$Rename_{0:d6}{1}' -f $i , $extension # $rename input cannot be used here #
Eu acho que alguma coisa está errada na linha acima, existe alguma maneira de fazer isso?
Write-Host "Renaming Bulk Files" -BackgroundColor Green -ForegroundColor White
$Source = Read-Host "Enter the Source Path Of the Folder, Ex: D:\Test"
$SourceExtension = Read-Host "Enter the Destination File Extension, Ex: *.pdf or *.jpg"
$Rename = Read-Host "Enter the File Name to be renamed"
$i = 0
Get-ChildItem -Path $Source -Filter $SourceExtension |
ForEach-Object {
$extension = $_.Extension
$newName = '$Rename_{0:d6}{1}' -f $i , $extension
$i++
Rename-Item -Path $_.FullName -NewName $newName
}
$newName = '$Rename_{0:d6}{1}' -f $i , $extension # $rename input cannot be used here
Por que não? Isso definitivamente funciona:
$newName = '{0}_{1:d6}{2}' -f $Rename, $i, $_.Extension
Primeiro, você precisa usar aspas duplas em vez de aspas simples para a expansão da variável funcionar:
"$Rename_{0:d6}{1}" -f $i , $extension
Mas ainda há um problema. O PowerShell acha que a variável a que você está se referindo é $Rename_
. Por quê? Porque sublinhado é um caractere válido em nomes de variáveis. Você precisa fazer isso:
"$($Rename)_{0:d6}{1}" -f $i , $extension
(Ou use a solução do beatcracker.)
Tags batch-rename powershell