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>]
说明
cmdlet 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
不会移动隐藏的文件。 若要移动隐藏的文件,请将 Force 参数与 一起使用 Get-ChildItem
。
注意
在 Windows PowerShell 2.0 中,使用 cmdlet 的 Get-ChildItem
Recurse 参数时,Path 参数的值必须是容器。 使用 Include 参数指定 *.txt
文件扩展名筛选器 (Get-ChildItem -Path .\* -Include *.txt -Recurse | Move-Item -Destination C:\TextFiles
) 。
示例 5:将注册表项和值移到另一个项
此命令将 中的注册表项HKLM\Software
和值MyCompany
移动到 MyNewCompany
中的注册表项。 通配符 (*
) 指示应移动密钥的内容 MyCompany
,而不是键本身。 在此命令中,省略可选的 Path 和 Destination 参数名称。
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 |
输入
可以通过管道将包含路径的字符串传递给此 cmdlet。
输出
None
默认情况下,此 cmdlet 不返回任何输出。
使用 PassThru 参数时,此 cmdlet 返回表示移动项的对象。
备注
PowerShell 包含以下别名 Move-Item
:
所有平台:
mi
move
Windows:
mv
此 cmdlet 将在同一提供程序支持的驱动器之间移动文件,但只会在同一驱动器中移动目录。
Move-Item
由于命令移动项的属性、内容和子项,因此默认情况下,所有移动都是递归的。此 cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入
Get-PSProvider
。 有关详细信息,请参阅 about_Providers。