pasta em massa renomeando o script Powershell

1

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.

  1. Este script tem 3 entradas
    • a) Insira o caminho da pasta de origem
    • b) Extensão dos arquivos e
    • c) Novo nome de arquivo a ser renomeado

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 
}
    
por Shashidhar 13.04.2015 / 07:09

2 respostas

1

$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 
    
por 13.04.2015 / 13:56
0

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.)

    
por 14.04.2015 / 08:28