Move-Item

将项从一个位置移动到另一个位置。

语法

Move-Item
    [-Path] <String[]>
    [[-Destination] <String>]
    [-Force]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PassThru]
    [-Credential <PSCredential>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-Item
    -LiteralPath <String[]>
    [[-Destination] <String>]
    [-Force]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PassThru]
    [-Credential <PSCredential>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

Move-Item 将项(包括其属性、内容以及子项)从一个位置移动到另一个位置。 但这些位置必须由同一提供程序支持。

例如,它可以将文件或子目录从一个目录移动到另一个目录,或将注册表子项从一个项移动到另一个项。 在你移动某个项时,该属性将被添加到新位置,并从其原来的位置删除。

示例

示例 1:将文件移动到另一个目录并重命名

此命令将 Test.txt 文件从 C: 驱动器移动到 E:\Temp 目录,并将其从 test.txt 重命名为 tst.txt

Move-Item -Path C:\test.txt -Destination E:\Temp\tst.txt

示例 2:将目录及其内容移动到另一个目录

此命令将 C:\Temp 目录及其内容移动到 C:\Logs 目录下。 Temp 目录及其所有子目录和文件随后将显示在 Logs 目录下。

Move-Item -Path C:\Temp -Destination C:\Logs

示例 3:将具有指定扩展名的所有文件从当前目录移动到另一个目录

此命令将当前目录(由句点 (.) 表示)中的所有文本文件 (*.txt) 移动到 C:\Logs 目录。

Move-Item -Path .\*.txt -Destination C:\Logs

示例 4:以递归方式将具有指定扩展名的所有文件从当前目录移动到另一个目录

此命令将所有文本文件从当前目录及其所有子目录递归地移动到 C:\TextFiles 目录下。

Get-ChildItem -Path ".\*.txt" -Recurse | Move-Item -Destination "C:\TextFiles"

该命令使用 Get-ChildItem cmdlet 获取当前目录(由句点 (.) 表示)及其子目录中带有 *.txt 文件扩展名的所有子项。 它使用 Recurse 参数使检索操作实现递归,并使用 Include 参数将检索限制为只针对 *.txt 文件。

管道运算符 (|) 将此命令的结果发送给 Move-Item,后者将文本文件移动到 TextFiles 目录下。

如果要移动到 C:\Textfiles 的文件具有相同名称,则 Move-Item 会显示错误并继续执行,但只将具有不同名称的文件移动到 C:\Textfiles。 其他文件仍保留在其原始目录下。

如果 Textfiles 目录(或目标路径的任何其他元素)不存在,则该命令将失败。 它不会为你创建缺少的目录,即使使用 Force 参数也是如此。 Move-Item 会将第一项移到一个名为 Textfiles 的文件中,然后显示一个错误,指出该文件已存在。

此外,默认情况下,Get-ChildItem 不移动隐藏文件。 若要移动隐藏文件,请对 Get-ChildItem 使用 Force 参数。

注意

在 Windows PowerShell 2.0 中,在使用 Get-ChildItem cmdlet 的 Recurse 参数时,Path 参数的值必须为容器。 使用 Include 参数指定 *.txt 文件扩展名筛选器 (Get-ChildItem -Path .\* -Include *.txt -Recurse | Move-Item -Destination C:\TextFiles)。

示例 5:将注册表项和值移动到另一个注册表项

此命令将 HKLM\SoftwareMyCompany 注册表项中的注册表项及其值移动到 MyNewCompany 项。 通配符 (*) 指示应移动 MyCompany 项的内容,而非移动项本身。 此命令中省略了可选的 PathDestination 参数名。

Move-Item "HKLM:\software\mycompany\*" "HKLM:\software\mynewcompany"

示例 6:将目录及其内容移动到指定目录的子目录

此命令将 Logs[Sept`06] 目录及其内容移动到 Logs[2006] 目录下。

Move-Item -LiteralPath 'Logs[Sept`06]' -Destination 'Logs[2006]'

LiteralPath 参数可用于代替 Path,因为原始目录名称包含左方括号和右方括号字符([])。 也可将路径括在单引号 (') 中,以便不会曲解倒引号 (`)。

Destination 参数也必须括在单引号中,因为它包括可能被曲解的方括号。

参数

-Confirm

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

注意

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

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Destination

指定指向要移动其中的项的位置的路径。 默认为当前目录。 不允许使用通配符。

若要重命名正移动的项,请在 Destination 参数的值中指定新名称。

Type:String
Position:1
Default value:Current directory
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Exclude

指定此 cmdlet 将在操作中排除的一个项或多个项(作为一个字符串数组)。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如 *.txt。 允许使用通配符。 仅当该命令包括项的内容时(例如 C:\Windows\*,其中通配符指定 C:\Windows 目录的内容),Exclude 参数才有效。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

指定用于限定 Path 参数的筛选器。 FileSystem 提供程序是唯一支持使用筛选器的已安装 PowerShell 提供程序。 可以在 about_Wildcards 中找到 FileSystem 筛选器语言的语法。 筛选器比其他参数更有效,因为提供程序是在 cmdlet 获取对象时应用筛选器,而不是在检索对象后再让 PowerShell 筛选对象。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

强制运行命令而不要求用户确认。 不同提供程序有不同的实现。 有关详细信息,请参阅 about_Providers

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

指定此 cmdlet 将在操作中包含的一个项或多个项(作为一个字符串数组)。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如 *.txt。 允许使用通配符。 仅当该命令包括项的内容时(例如 C:\Windows\*,其中通配符指定 C:\Windows 目录的内容),Include 参数才有效。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

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

有关详细信息,请参阅 about_Quoting_Rules

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

指定指向项的当前位置的路径。 默认为当前目录。 允许使用通配符。

Type:String[]
Position:0
Default value:Current directory
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

String

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

输出

None

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

PSObject

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

备注

PowerShell 包含以下 Move-Item 别名:

  • 所有平台:

    • mi
    • move
  • Windows:

    • mv
  • 此 cmdlet 将在由同一提供程序支持的驱动器之间移动文件,但它只在同一驱动器内移动目录。

  • 因为 Move-Item 命令移动项的属性、内容和子项,所以,默认情况下,所有移动都是递归的。

  • 此 cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PSProvider。 有关详细信息,请参阅 about_Providers