重命名文件夹升序

时间:2016-01-14 08:56:50

标签: powershell

我想自动备份并始终保留一些旧版本。我们的想法是在共享上使用Windows备份并使用PowerShell脚本启动它。

我差不多完成了,但我坚持重命名。

分享:\\Server\SysBackup\WindowsImageBackup

在该共享中,我拥有所有PC的文件夹。因此,例如,我想保留最后三个备份,它应该如下:

当前备份:PC1
旧备份:PC1_1,PC1_2

现在我想将它们重命名为更高的数字

PC1_2→PC1_3
PC1_1→PC1_2
PC1→PC1_1

因此备份现在可以使用PC1文件夹进行最新备份。

这就是我到目前为止所做的:

$BackupFolder = Get-ChildItem -Directory ($Target + "\WindowsImageBackup") |
                Where-Object -Property Name -Like $env:computername* |
                Select-Object -Property Name
$CurrentBackups = $BackupFolder.Count

if ($CurrentBackups -ge 1) {
    Push-Location ($Target + "\WindowsImageBackup")

    $i = 0
    $xCurrentArray = $CurrentBackups - 1
    $NewSubVersion = $CurrentBackups

    while ($i -le $CurrentBackups) {
        $NewName = $BackupFolder[$xCurrentArray].Name.TrimEnd("_")
        Rename-Item $BackupFolder[$xCurrentArray] -NewName 
    }

    Pop-Location
    Clear-Variable $i
}

文件未重命名,我收到以下错误:

  

您无法在空值表达式上调用方法   Rename-Item:缺少参数'NewName'的参数。指定“System.String”类型的参数,然后重试。

我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

我发现了错误

if ($CurrentBackups -ge 1)
{
    Push-Location ($Target + "\WindowsImageBackup\")

    $i= 0
    $xCurrentArray = $CurrentBackups - 1
    $NewSubVersion = $CurrentBackups

    while ($i -lt $CurrentBackups)
    {

        if ($BackupFolder[$xCurrentArray].Contains("_"))
        {

            $Index = $BackupFolder[$xCurrentArray].IndexOf("_")
            $NewName = $BackupFolder[$xCurrentArray].Substring(0, $Index)
            Rename-Item $BackupFolder[$xCurrentArray] -NewName ($NewName + "_" + $NewSubVersion)
            Clear-Variable Index
            $NewSubVersion--
        }
        else
        {
            $NewName = $BackupFolder[$xCurrentArray]
            Rename-Item $BackupFolder[$xCurrentArray] -NewName ($NewName + "_1")
        }
        $i++
        $xCurrentArray--


    }


    Pop-Location
    Clear-Variable i
}