当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 PowerShell 中重命名文件 - Rename-Item—LazyAdmin

作者:精品下载站 日期:2024-12-14 18:43:49 浏览:15 分类:玩电脑

如何在 PowerShell 中重命名文件 - Rename-Item—LazyAdmin


重命名单个文件最好在资源管理器中完成,但如果您需要重命名多个文件怎么办?那么最好使用 PowerShell 来重命名文件。使用PowerShell,我们可以轻松地选择文件并快速重命名它们。

在PowerShell中,我们可以使用Rename-Item cmdlet来重命名文件和注册表项。该 cmdlet 只需要一个路径和一个新文件名即可工作。

在本文中,我们将了解如何使用 PowerShell 重命名文件、重命名多个文件以及重命名注册表项。

使用 PowerShell 重命名文件

要使用 PowerShell 重命名文件,我们将使用 Rename-Item cmdlet。此 cmdlet 需要您要重命名的文件的路径以及文件的新名称。值得一提的是,该 cmdlet 在重命名文件后不会显示任何输出。假设我们要将文件 test.txt 重命名为 newtest.txt

Rename-Item C:\temp\test.txt -NewName newtest.txt

[玩转系统] 如何在 PowerShell 中重命名文件 - Rename-Item—LazyAdmin

我们不仅限于文件名,我们还可以使用 cmdlet 更改扩展名:

# Change the extension test.txt to .log
Rename-Item C:\temp\test.txt -NewName test.log

cmdlet Rename-Item 没有提供很多我们可以使用的参数,只有以下参数:

-Path

要重命名的文件的路径和文件名

-NewName

文件的新名称

-Force

重命名只读或隐藏文件

-Confirm

重命名前提示确认

-WhatIf

在测试模式下运行

重命名前请求确认

使用脚本重命名文件时,在运行脚本之前测试并仔细检查脚本是否正常工作始终很重要。 Rename-Item cmdlet 有两个选项:Confirm 和 WhatIf。 WhatIf 参数通常在 PowerShell 中使用,用于在实际运行 cmdlet 之前查看该 cmdlet 将执行的操作。在执行 cmdlet 之前,Confirm 会要求确认。

# Ask for confirmation
Rename-Item C:\temp\test.txt -NewName test.log -Confirm

# Result
Confirm
Are you sure you want to perform this action?
Performing the operation "Rename File" on target "Item: C:\temp\test.txt Destination: C:\temp\test.log".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

或者,当使用 WhatIf 时,您将看到 cmdlet 将执行的操作:

Rename-Item C:\temp\test.txt -NewName test.log -WhatIf
What if: Performing the operation "Rename File" on target "Item: C:\temp\test.txt Destination: C:\temp\test.log".

重命名隐藏文件和只读文件

默认情况下,标记为只读的文件或隐藏的文件不会被重命名。如果需要重命名只读文件,则可以使用 -Force 参数。这样,传递到 cmdlet 的每个文件都将被重命名。

Rename-Item C:\temp\test.txt -NewName test.log -Force

使用 PowerShell 重命名多个文件

要使用 PowerShell 重命名多个文件,我们首先需要使用 Get-ChildItem cmdlet 获取文件。然后我们可以通过管道在其后面输入 Rename-Item cmdlet,它将自动获取文件路径。对于新文件名,我们需要使用字符串替换函数。

对于此示例,我有几个日志文件,我想将其扩展名更改为 .txt

Get-ChildItem -Path c:\temp\*.log -File | Rename-Item -NewName {$_.Name -replace ".log", ".txt" }

上面的 cmdlet 获取所有文件,获取每个文件的文件名,并将扩展名 .log 替换为 .txt。现在这个 cmdlet 不提供任何输出。这不一定是问题,但有时您想查看脚本处理了哪些文件。

为此,我们需要对脚本进行一些修改。我们仍将首先使用 Get-ChildItem cmdlet 获取文件,但我们在其后面通过管道传输 ForEach-Object 循环。在 ForEach 循环的脚本块中,我们存储当前文件名并创建一个新文件名,并将其存储在变量中。

Get-ChildItem -Path c:\temp\*.txt -File | ForEach-Object {
    
    $currentFile = $_.Name
    $newName = $_.Name -replace "-", " "

    Rename-Item -path $_ -NewName $newName

    Write-Host "Renamed file $currentFile to $newName"
}

然后我们可以重命名每个文件并将旧文件和新文件写入控制台。现在,您还可以创建一个日志文件来存储结果,而不是写入控制台。

[玩转系统] 如何在 PowerShell 中重命名文件 - Rename-Item—LazyAdmin

向文件名添加前缀或后缀

另一个常见任务是为多个文件添加前缀。根据上面的示例,添加前缀非常容易。我们只需指定前缀并将其添加到新文件名中即可。

$prefix = "TEST-"
Get-ChildItem -Path c:\temp\*.txt -File | ForEach-Object {
    
    $currentFile = $_.Name
    $newName = $prefix + $_.Name

    Rename-Item -path $_ -NewName $newName

    Write-Host "Renamed file $currentFile to $newName"
}

要添加后缀,我们需要拆分文件名,因为名称默认包含扩展名。我们希望将后缀放在名称和扩展名后面。为此,我们可以使用 .basename 叶子,它是文件名对象的一部分。

$suffix = Get-Date -Format "MM-dd-yyyy"
Get-ChildItem -Path c:\temp\*.txt -File | ForEach-Object {
    
    $newName = $_.BaseName + $suffix + $_.Extension
    Rename-Item -path $_ -NewName $newName
}

重命名注册表项

Rename-Item cmdlet 还可以重命名注册表项。当您需要在软件更新后更改注册表项或不想删除某个项,但仅通过重命名临时禁用它时,这会派上用场。

例如,要重命名应用程序的许可证密钥,您可以执行以下操作:

Rename-Item -Path "HKLM:\Software\Application\License" -NewName "OldLicense"

这只会将路径 HKLM:\Software\Application 中的密钥 License 重命名为 OldLicense

总结

如您所见,使用 PowerShell 重命名文件非常简单。要批量重命名文件,您需要使用 Get-ChildItem cmdlet。如果您是 PowerShell 新手,请务必阅读我的 PowerShell 入门指南!

我希望这篇文章对您有所帮助,如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯