[玩转系统] 如何在 PowerShell 中重命名文件?
作者:精品下载站 日期:2024-12-15 00:02:33 浏览:14 分类:玩电脑
如何在 PowerShell 中重命名文件?
要求:使用 PowerShell 重命名文件。
PowerShell 重命名文件
处理凌乱、无序的文件名是任何计算机用户常见的头痛问题。您从互联网上下载带有随机数字或重复名称的文件。您有包含名为 DSC0001、DSC0002 等图像的文件夹。或者您需要快速重命名具有公共前缀的项目的批量文件。
重命名文件是您可能需要执行的常见任务之一,以组织数据并使其更易于查找和访问。手动一一重命名文件和文件夹可能需要很长时间。这就是 PowerShell 发挥作用的地方。只需几个 PowerShell 命令,您就可以根据搜索和替换重命名多个文件、附加时间戳、添加编号序列等等。
在本初学者指南中,我们将探讨 PowerShell 中用于批量重命名文件和文件夹的不同选项。您将学习一些方便的技术,例如:
- 如何使用 -replace 替换文件名中的文本
- 向多个文件添加前缀/后缀
- 删除或更改文件扩展名
- 递归重命名子文件夹中的文件
- 附加时间戳以进行版本控制
- 安全处理文件名冲突
无论您是管理服务器的系统管理员还是组织文件夹的普通 PC 用户,本教程都将向您展示如何利用 PowerShell 的强大功能一劳永逸地消除文件名混乱。请继续阅读,了解 Rename-Item cmdlet 如何帮助您比手动更快地重命名文件!
使用 PowerShell 重命名单个文件
使用PowerShell,您可以轻松修改文件名、更改文件扩展名、添加前缀或后缀以及轻松执行复杂的重命名操作。 PowerShell 中的 Rename-Item cmdlet 允许您重命名文件、文件夹和注册表项等项目。要使用 PowerShell 重命名文件,可以使用 Rename-Item cmdlet。您需要指定现有文件路径以及要为其指定的指定项目的新名称。以下是 Rename-Item cmdlet 的基本语法。
Rename-Item [-Path] <String> [-NewName] <String> [-PassThru] [-Force] [-Credential <PSCredential>] [-WhatIf] [-Confirm] [<CommonParameters>]
例如,要将名为 oldname.txt
的文件重命名为 newname.txt
,您可以使用以下命令:
Rename-Item -Path C:\Example\oldname.txt -NewName C:\Example\newname.txt
这会将 C:\Example
目录中的文件从 oldname.txt
重命名为 newname.txt
。您可以将 -PassThru 参数添加到 cmdlet 以在 Windows Powershell 控制台中查看输出。
在重命名中覆盖现有文件
默认情况下,Rename-Item cmdlet 无法覆盖现有文件。您将收到一条错误消息:“Rename-Item:当文件已存在时无法创建该文件。” (不过,您可以测试目标文件是否存在,然后将其删除!)。使用 Move-Item
cmdlet 来通过“Force”开关重命名文件。此 cmdlet 要求您指定文件的源路径和目标路径,其中可以包含新文件名。以下示例说明了如何使用 Move-Item
cmdlet 移动和重命名文件:
Move-Item -Path C:\Temp\Oldname.txt -Destination C:\Temp\newname.txt -Force
请注意,您需要具有适当的权限才能重命名指定位置的文件。它有一个 -Force 参数,可用于覆盖移动操作期间可能发生的任何错误,例如覆盖任何现有文件并包括只读/隐藏文件。
PowerShell重命名多个文件
您可能遇到过需要一次重命名多个文件的情况。要在 PowerShell 中重命名多个文件,您可以使用 Get-ChildItem
cmdlet 获取要重命名的文件列表,然后将该列表通过管道传输到 Rename-Item
cmdlet。您可以使用通配符指定要重命名的文件,还可以使用 Rename-Item
cmdlet 的 -NewName
参数指定文件的新名称。
让我们递归地将文件夹及其子文件夹中所有 txt 文件中的“空格”字符替换为“-”。
Get-ChildItem -Path "C:\Temp" -Recurse -Include "*.txt" | Rename-Item -NewName { $_.Name -replace " ","-" }
同样,您可以使用以下命令将文件名中的旧文本替换为新文本:
Get-ChildItem -Path "C:\Temp" | Rename-Item -NewName {$_.Name -replace "old", "new"}
此命令使用 Get-ChildItem
cmdlet 检索给定目录中的所有文件,并将它们作为管道输入传递给 Rename-Item
cmdlet。 -replace
运算符将指定的字符串替换为所需的替换内容。
重命名文件夹中数量不断增加的所有文件:
让我们为目录中的所有日志文件添加序列号:
Get-ChildItem -Path "C:\Temp\Logs" -Recurse -Include "*.txt" | ForEach-Object -Begin { $Counter = 1 } -Process { Rename-Item $_ -NewName "Log_$Counter.log" ; $Counter++ }
您可以将结果沿管道发送并将其通过管道传送到Where-object cmdlet,而不是使用-include 和-exclude 参数。
通过在文件名中添加时间戳来重命名所有文件
要将时间戳后缀添加到文件夹中的所有文件,请使用:
#Get the Timestamp
$TimeStamp = Get-Date -F yyyy-MM-dd_HH-mm
#Get all text files from a Folder and rename them by appending Timestamp
Get-ChildItem -Path "C:\Temp" -Recurse -Include "*.txt" | ForEach-Object {
Rename-Item -Path $_.FullName -NewName "$($_.DirectoryName)$($_.BaseName)_$TimeStamp$($_.Extension)"
}
这首先获取当前日期,然后将其附加到选择的文件名中。
重命名当前目录中的所有文件,并在每个文件前面加上“AppLog - ”前缀:
#Get all text files from a Folder and rename them by appending Timestamp
Get-ChildItem -Path "C:\Temp" -Recurse -Include "*.txt" | ForEach-Object {
Rename-Item $_.FullName -NewName "$($_.DirectoryName)\AppLog - $($_.BaseName)$($_.Extension)"
}
这里,$_ 自动变量代表通过 Get-ChildItem 管道传输的每个文件对象。
批量重命名目录中的所有文件
在 Windows 文件资源管理器中批量重命名文件可能是一项耗时的任务,尤其是在处理大量文件时。值得庆幸的是,有一些有效的方法可以使用 PowerShell 自动化此过程。
我们需要使用循环来遍历文件夹中的文件,并在脚本块中一一更改文件的名称。下面是如何过滤和重命名一系列名为“abc.txt”、“def.txt”、“xyz.txt”等的文件为“file1.csv”、“file2.csv”、“file3”的示例.csv”等。您可以使用以下脚本。这将以顺序方式重命名文件,并增加每个文件的文件名末尾的数字。
$i = 1
Get-ChildItem -Path C:\Temp\*.txt | ForEach-Object {
Rename-Item $_ -NewName "File$i.csv"
$i++
}
此命令使用 Get-ChildItem
cmdlet 获取 Temp
文件夹中扩展名为 .txt
的所有文件。然后,它使用 ForEach-Object
cmdlet 迭代每个文件,并将所选文件的 .txt
扩展名替换为 .csv
扩展名。
使用序列号重命名文件
如果要向文件名添加序号,可以使用循环和 -f
格式运算符。这允许您在每个文件名的末尾添加一个数字。这是一个例子:
$i = 1
Get-ChildItem -Path "C:\Docs" -File -Filter "*.zip" | ForEach-Object {
$NewName = "File-{0:D3}{1}" -f $i, $_.Extension
Rename-Item $_.FullName -NewName $NewName
$i++
}
在此示例中,循环遍历每个 zip 文件,并且 $i
变量递增 1。这里,$_ 表示文件对象。 -f
运算符用于格式化新文件名,其中 {0:D3}
表示带前导零的序列号,{1}
> 代表文件扩展名。
通过使用PowerShell脚本添加前缀或后缀来批量重命名文件
重命名文件夹中的多个文件可能是一项乏味且容易出错的任务,尤其是当您有大量文件需要重命名时。 PowerShell 脚本可以帮助自动执行此任务并节省您的时间和精力。下面是一个 PowerShell 脚本示例,该脚本将文件夹中的所有文件重命名为具有前缀和后缀:
#Parameters
$Folder = "C:\Reports"
$Prefix = "MyPrefix_"
$Suffix = "_MySuffix"
#Add Prefix and Suffix to All Files in the Folder
Get-ChildItem -Path $Folder | ForEach-Object {
$NewName = '{0}{1}{2}{3}' -f $Prefix,$_.BaseName,$Suffix,$_.Extension
Rename-Item -Path $_.FullName -NewName $NewName
}
此脚本使用 Get-ChildItem
cmdlet 获取指定文件夹中的所有文件。然后,它使用 ForEach-Object
cmdlet 迭代每个文件并使用变量中指定的前缀和后缀对其进行重命名。
使用 PowerShell 重命名文件扩展名
PowerShell 提供了一种使用 -replace
运算符重命名文件扩展名的简单方法。以下是将所有具有 .txt
扩展名的文件重命名为具有 .log
扩展名的方法:
#Get All Txt Files from C:\Logs Folder
$Files = Get-ChildItem C:\Logs\*.txt
#Change File extention from .txt to .log
ForEach ($File in $Files) {
Rename-Item -Path $File.FullName -NewName ($File.Name -replace ".txt", ".log")
Write-host "Renamed File:"$File.FullName
}
这将重命名 C:\Logs
目录中的所有 .txt
文件,使其具有 .txt
扩展名。它使用 -replace
运算符将 .txt
扩展名替换为 .log
,同时保持其余文件名相同。
使用正则表达式 (RegEx) 重命名文件
如果需要使用更复杂的模式重命名文件,可以在 PowerShell 中使用正则表达式。正则表达式允许您匹配和替换文件名中的特定模式。这是一个例子:
Get-ChildItem -Path "C:\Docs" -File | Rename-Item -NewName {$_.Name -replace '(\d{4})-(\d{2})-(\d{2})', '$2-$3-$1'}
在此示例中,正则表达式模式 (\d{4})-(\d{2})-(\d{2})
匹配格式为“YYYY-MM-DD”的日期并交换年和日的位置,形成“MM-DD-YYYY”格式。这是从文件名中删除特殊字符的另一个示例:
Get-ChildItem -Path "C:\Documents" -Filter "*.txt" | Rename-Item -NewName { $_.Name -replace "[^\w\s\.-]", "" }
在上面的示例中,我们从 C:\Documents
中所有扩展名为 .txt
的文件的文件名中删除所有特殊字符(不包括空格和破折号)目录。正则表达式模式 [^\w\s\.-]
匹配除单词字符、空白字符、点或连字符之外的任何字符。
如果文件存在于 PowerShell 中,则重命名
在 PowerShell 中重命名文件时,您可能会遇到要使用的新文件名已存在的情况。为了避免覆盖现有文件,您可以在重命名之前检查文件是否存在。要在 PowerShell 中重命名文件(如果存在),您可以使用 Test-Path
cmdlet 检查该文件是否存在,然后使用 Rename-Item
cmdlet 重命名该文件文件。以下是如何执行此操作的示例:
#Parameter
$OldFile = "C:\Logs\OldFile.txt"
$NewFile = "C:\Logs\NewFile.log"
#PowerShell to rename file if exists
If (Test-Path $OldFile) {
Rename-Item -Path $OldFile -NewName $NewFile
Write-host "'$OldFile' has been renamed to '$NewFile'" -f Green
}
Else{
Write-host "'$OldFile' does not exists!" -f Yellow
}
这将检查指定路径中是否存在 oldFile.txt
。如果是,它将被重命名为 newFile.log
。如果该文件不存在,则不会执行 Rename-Item
cmdlet,并且脚本将继续运行。在重命名旧文件之前检查目标文件是否存在并删除它怎么样?
#Parameter
$OldFile = "C:\Logs\OldFile.txt"
$NewFile = "C:\Logs\NewFile.log"
#PowerShell to rename file if exists
If (Test-Path $OldFile) {
#Check if the Target File Exists
If (Test-Path $NewFile) {
#Delete the target file
Remove-Item $NewFile
}
Rename-Item -Path $OldFile -NewName $NewFile
Write-host "'$OldFile' has been renamed to '$NewFile'" -f Green
}
Else{
Write-host "'$OldFile' does not exists!" -f Yellow
}
为了避免冲突,您还可以在批量重命名操作中生成新名称时使用唯一的前缀/后缀或时间戳。
PowerShell 移动和重命名
我们还可以结合 Move-Item
和 Rename-Item
cmdlet 一步移动和重命名文件。例如,要将文件 newreport.docx 移动到 Archive 文件夹并重命名:
# Rename and move an item
Move-Item -Path .\ApplicationLog.txt -Destination .\Archive\AppLog.txt
这将通过一个命令移动并重命名该文件。确保目标文件夹已就位。否则,您将面临“移动项目:找不到路径的一部分”。错误。有关移动文件的更多信息请参见:如何在 PowerShell 中移动文件?
PowerShell 重命名文件 - 使用案例:
以下是您可能希望使用 PowerShell 重命名文件的一些常见场景:
- 清理混乱的文件名或命名约定不一致的文件夹名称
- 通过删除附加到文件名的随机数字来重命名下载的文件 - 批量重命名文件
- 一次添加或删除多个文件的文件扩展名
- 将时间戳或顺序编号附加到文件名
- 将客户名称或项目名称添加到批量文件中
- 当从另一个系统迁移文件并且需要修改文件名时
- 用于图像、视频或音频文件的批量后处理
手动重命名一两个文件很容易。但对于批量重命名任务,使用 PowerShell 可以节省大量时间和精力。
结论
总之,PowerShell 可以使重命名大量文件等耗时的任务变得更加简单和快捷。它允许您使用通配符和其他高级功能一次重命名多个文件。它还允许您在使用“-WhatIf”开关提交更改之前预览更改,这有助于避免错误。同样,-confirm 在执行命令之前提示确认。在本指南中,我们探索了使用 PowerShell 重命名文件的不同方法,包括重命名单个文件、重命名文件夹中的多个文件、使用 PowerShell 脚本批量重命名文件以及重命名文件扩展名。总体而言,PowerShell 可以轻松、快速、高效地重命名文件,使其成为处理大量文件的任何人的宝贵工具。
因此,下次您需要处理充满杂乱文件的文件夹时,不要浪费时间手动重命名它们。使用 PowerShell 以闪电般的速度批量重命名文件。 Rename-Item cmdlet 以及一些 PowerShell 技巧可以节省您数小时的精力。
经常问的问题:
在 PowerShell 中重命名文件夹的命令是什么?
在 PowerShell 中重命名文件夹的命令行工具是“Rename-Item”。例如,Rename-Item -Path 'C:\old_folder' -NewName 'new_folder'
这里是有关如何使用 PowerShell 重命名文件夹?
如何在 PowerShell 中重命名文件夹和子文件夹中的所有文件?
要使用 PowerShell 重命名文件夹及其子文件夹中的所有文件,可以使用“Get-ChildItem”cmdlet 获取所有文件,然后使用“Rename-Item”cmdlet 重命名它们。以下是可用于向所有文件添加前缀的 PowerShell 脚本示例:
Get-ChildItem -Path "C:\Docs" -File -Recurse | ForEach-Object {
Rename-Item -Path $_.FullName -NewName ("new_" + $_.Name)
}
如何在命令行中更改文件夹名称?
要使用命令行更改文件夹名称,您可以使用“ren”命令,后跟当前文件夹名称和新文件夹名称。例如,如果要将文件夹名称从“old_folder”更改为“new_folder”,则可以键入“ren old_folder new_folder”并按 Enter 键。
如何在 PowerShell 中移动和重命名文件?
要在 PowerShell 中移动和重命名文件,您可以使用 Move-Item
cmdlet。以下是如何执行此操作的示例:
Move-Item -Path "C:\Docs\Logs.zip" -Destination "C:\Docs\New-Logs.zip"
如何使用 PowerShell 重命名注册表中的项?
除了重命名文件和文件夹之外,Rename-Item cmdlet 还可以用于重命名注册表项和值。这是一个例子:
Rename-Item -Path "HKCU:\Software\MyKey" -NewName "NewKey"
Set-ItemProperty -Path "HKLM:\Software\MyKey" -Name "OldValue" -Value "NewValue"
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[短剧合集] 2025年06月2日 精选+付费短剧推荐39部
[软件合集] 25年6月2日 精选软件18个
[软件合集] 25年6月1日 精选软件15个
[短剧合集] 2025年06月1日 精选+付费短剧推荐59部
[短剧] 2025年05月31日 精选+付费短剧推荐58部
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag