批量文件夹重命名 Powershell 脚本

批量文件夹重命名 Powershell 脚本

下面的脚本用于批量文件夹重命名。

但是我想将其作为通用脚本,以便用户可以输入并相应地使用它。

  1. 此脚本有 3 个输入
    • a)输入源文件夹路径
    • b) 文件的扩展和
    • c) 要重命名的新文件名

除 c) 新文件名需要重命名外,其他都很好

$Rename = input

$newName = '$Rename_{0:d6}{1}' -f  $i , $extension  # $rename input cannot be used here # 

我认为上面这行有些问题,有什么办法可以解决这个问题吗?

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 
}

答案1

$newName = '$Rename_{0:d6}{1}' -f  $i , $extension  # $rename input cannot be used here

为什么不呢?这绝对有效:

$newName = '{0}_{1:d6}{2}' -f  $Rename, $i, $_.Extension 

答案2

首先,您需要使用双引号而不是单引号才能使变量扩展起作用:

"$Rename_{0:d6}{1}" -f  $i , $extension 

但还有一个问题。PowerShell 认为你引用的变量是$Rename_。为什么?因为下划线在变量名中是有效字符。你需要这样做:

"$($Rename)_{0:d6}{1}" -f  $i , $extension 

(或者使用 beatcracker 的解决方案。)

相关内容