共用方式為


Move-Item

將項目從某個位置移動到另一個位置。

Syntax

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>]

Description

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-ItemTextFiles ,這會將文本檔移至目錄。

如果要移動的 C:\Textfiles 檔案具有相同的名稱, Move-Item 會顯示錯誤並繼續,但只會將每個名稱為的一個檔案移至 C:\Textfiles。 其他檔案仍會留在原始的目錄中。

Textfiles如果目錄 (或目的地路徑的任何其他元素) 不存在,命令就會失敗。 即使您使用 Force 參數,也不會為您建立遺漏的目錄。 Move-Item 會將第一個專案移至名為 Textfiles 的檔案,然後顯示錯誤,說明檔案已經存在。

此外,根據預設, Get-ChildItem 不會移動隱藏的檔案。 若要移動隱藏的檔案,請使用 Force 參數搭配 Get-ChildItem

注意

在 Windows PowerShell 2.0 中,使用 Cmdlet 的 Get-ChildItemRecurse 參數時,Path 參數的值必須是容器。 使用 Include 參數來指定 *.txt 擴展名篩選 (Get-ChildItem -Path .\* -Include *.txt -Recurse | Move-Item -Destination C:\TextFiles) 。

範例 5:將登錄機碼和值移至另一個機碼

此命令會將 登錄HKLM\Software機碼內的登錄機碼和值MyCompany移至 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。 允許使用萬用字元。 Exclude 參數只有在命令包含項目的內容時有效,例如 C:\Windows\*,其中通配符會指定目錄的內容C:\Windows

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。 允許使用萬用字元。 Include 參數只有在命令包含項目的內容時有效,例如 C:\Windows\*,其中通配符會指定目錄的內容C:\Windows

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