Rename-Item

重命名 PowerShell 提供程序命名空间中的项。

语法

Rename-Item
      [-Path] <String>
      [-NewName] <String>
      [-Force]
      [-PassThru]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm] 
      [<CommonParameters>]
Rename-Item
      -LiteralPath <String>
      [-NewName] <String>
      [-Force]
      [-PassThru]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm] 
      [<CommonParameters>]

说明

Rename-Item cmdlet 更改指定项的名称。 此 cmdlet 不影响正被重命名的项的内容。

不能使用 Rename-Item 移动项,例如,不能通过指定路径及新名称来移动项。 若要移动并重命名项,请使用 Move-Item cmdlet。

示例

示例 1:重命名文件

此命令将文件 daily_file.txt 重命名为 monday_file.txt

Rename-Item -Path "c:\logfiles\daily_file.txt" -NewName "monday_file.txt"

示例 2:重命名和移动项

不能使用 Rename-Item 来重命名和移动项。 具体来说,不能为 NewName 参数的值提供路径,除非该路径与 Path 参数中指定的路径相同。 在其他情况下,仅允许输入新名称。

Rename-Item -Path "project.txt" -NewName "d:\archive\old-project.txt"

Rename-Item : can't rename because the target specified represents a path or device name.
At line:1 char:12
+ Rename-Item <<<<  -path project.txt -NewName d:\archive\old-project.txt
+ CategoryInfo          : InvalidArgument: (:) [Rename-Item], PS>  Move-Item -Path "project.txt" -De
stination "d:\archive\old-project.txt"

此示例尝试将当前目录中的 project.txt 文件重命名为 D:\Archive 目录中的 old-project.txt。 结果将在输出中显示错误。

请改用 Move-Item cmdlet。

示例 3:重命名注册表项

此示例将注册表项从 Advertising 重命名为 Marketing。 当该命令完成时,将重命名该注册表项,但该注册表项中的注册表条目保持不变。

Rename-Item -Path "HKLM:\Software\MyCompany\Advertising" -NewName "Marketing"

示例 4:重命名多个文件

此示例将当前目录中的所有 *.txt 文件重命名为 *.log

Get-ChildItem *.txt

Directory: C:\temp\files

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        10/3/2019   7:47 AM           2918 Friday.TXT
-a----        10/3/2019   7:46 AM           2918 Monday.Txt
-a----        10/3/2019   7:47 AM           2918 Wednesday.txt

Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '.txt','.log' }
Get-ChildItem *.log

Directory: C:\temp\files

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        10/3/2019   7:47 AM           2918 Friday.log
-a----        10/3/2019   7:46 AM           2918 Monday.log
-a----        10/3/2019   7:47 AM           2918 Wednesday.log

Get-ChildItem cmdlet 获取当前文件夹中具有 .txt 文件扩展名的所有文件,然后通过管道将其传递给 Rename-ItemNewName 的值是在将值提交到 NewName 参数之前运行的脚本块。

在该脚本块中,$_ 变量表示通过管道传递给该命令的各文件对象。 该脚本块使用 -replace 运算符将每个文件的文件扩展名替换为 .log。 请注意,使用 -replace 运算符进行匹配并不区分大小写。

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Credential

注意

随同 PowerShell 一起安装的任何提供程序都不支持此参数。 若要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用 Invoke-Command

类型:PSCredential
Position:Named
默认值:Current user
必需:False
接受管道输入:True
接受通配符:False

-Force

强制 cmdlet 重命名非此不能更改的项,如隐藏文件或只读文件,或者只读别名或变量。 该 cmdlet 不能更改常量别名或变量。 不同提供程序有不同的实现。 有关详细信息,请参阅 about_Providers

即使使用 Force 参数,该 cmdlet 也无法覆盖安全限制。

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-LiteralPath

指定一个或多个位置的路径。 LiteralPath 的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

有关详细信息,请参阅 about_Quoting_Rules

类型:String
别名:PSPath, LP
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-NewName

指定项的新名称。 请仅输入名称,而不是路径加名称。 如果输入的路径不同于 Path 参数中指定的路径,则 Rename-Item 会生成错误。 若要重命名和移动项,请使用 Move-Item

不能在 NewName 参数的值中使用通配符。 若要为多个文件指定名称,请使用正则表达式中的替换运算符。 有关替换运算符的详细信息,请参阅 about_Comparison_Operators

类型:String
Position:1
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-PassThru

将表示项的对象返回到管道。 默认情况下,此 cmdlet 将不产生任何输出。

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Path

指定要重命名的项的路径。

类型:String
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

String

可以通过管道将包含路径的字符串传递给此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

PSObject

使用 PassThru 参数时,此 cmdlet 将返回一个表示已重命名项的对象。

备注

PowerShell 包含 Rename-Item 的以下别名:

  • 所有平台:
    • ren
    • rni

Rename-Item 旨在处理任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PsProvider。 有关详细信息,请参阅 about_Providers