共用方式為


Move-Item

將專案從一個位置移至另一個位置。

語法

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

Description

Move-Item Cmdlet 會將專案,包括其屬性、內容和子專案,從一個位置移至另一個位置。 相同的提供者必須支持這些位置。 例如,它可以將檔案或子目錄從某個目錄移至另一個目錄,或將登錄子機碼從一個機碼移至另一個機碼。 當您移動專案時,它會新增至新位置,並從其原始位置刪除。

範例

範例 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 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 中,使用 Get-ChildItem Cmdlet 的 Recurse 參數時,Path 參數的值必須是容器。 使用 Include 參數來指定 .txt 擴展名篩選條件 (Get-ChildItem -Path .\* -Include *.txt -Recurse | Move-Item -Destination C:\TextFiles)。

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

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

此命令會將 「HKLM\Software」 中 「MyCompany」 登錄機碼內的登錄機碼和值移至 「MyNewCompany」 機碼。 通配符 ('*') 表示應該移動 “MyCompany” 索引鍵的內容,而不是密鑰本身。 在此命令中,會省略選擇性 PathDestination 參數名稱。

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

範例 6:將目錄及其內容移至指定目錄的子目錄

此命令會將 “Logs[9'06]” 目錄 (及其內容) 移至 “Logs[2006]” 目錄。

會使用 LiteralPath 參數,而不是 Path,因為原始目錄名稱包含左括號和右括號字元 (“[” 和 “]” )。 路徑也會以單引號 (' ') 括住,因此反引號符號 (') 不會被誤解。

Destination 參數不需要常值路徑,因為 Destination 變數也必須以單引弧括住,因為它包含可錯誤解譯的括弧。

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

參數

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

注意

任何與 PowerShell 一起安裝的提供者都不支援此參數。 若要模擬其他使用者,或在執行此 Cmdlet 時提升您的認證,請使用 Invoke-Command

類型:PSCredential
Position:Named
預設值:Current user
必要:False
接受管線輸入:True
接受萬用字元:False

-Destination

指定要移動專案之位置的路徑。 預設值為目前目錄。 允許通配符,但結果必須指定單一位置。

若要重新命名要移動的專案,請在 Destination 參數的值中指定新的名稱。

類型:String
Position:1
預設值:Current directory
必要:False
接受管線輸入:True
接受萬用字元:True

-Exclude

指定此 Cmdlet 從作業中排除的專案或專案,做為字串陣列。 此參數的值會限定 path 參數。 輸入路徑專案或模式,例如 「*.txt」。。 允許通配符。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-Filter

以提供者的格式或語言指定篩選。 此參數的值會限定 path 參數。

篩選的語法,包括使用通配符,取決於提供者。 篩選比其他參數更有效率,因為提供者會在 Cmdlet 取得物件時套用它們,而不是在擷取對象之後讓 PowerShell 篩選物件。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-Force

強制命令執行,而不要求使用者確認。 實作會因提供者而異。 如需詳細資訊,請參閱 about_Providers

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Include

指定此 Cmdlet 在作業中移動的專案或專案,做為字串陣列。 此參數的值會限定 path 參數。 輸入路徑專案或模式,例如 「*.txt」。。 允許通配符。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-LiteralPath

指定專案目前位置的路徑。 不同於 Path 參數,LiteralPath 的值會與輸入時完全相同。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。

類型:String[]
別名:PSPath
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-PassThru

會傳回 物件,代表您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Path

指定專案目前位置的路徑。 預設值為目前目錄。 允許通配符。

類型:String[]
Position:0
預設值:Current directory
必要:True
接受管線輸入:True
接受萬用字元:True

-UseTransaction

在作用中交易中包含 命令。 只有在交易進行中時,此參數才有效。 如需詳細資訊,請參閱 about_Transactions。

類型:SwitchParameter
別名:usetx
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

String

您可以使用管線傳送包含此 Cmdlet 路徑的字串。

輸出

None or an object representing the moved item.

當您使用 PassThru 參數時,這個 Cmdlet 會產生代表已移動項目的物件。 否則,此 Cmdlet 不會產生任何輸出。

備註

此 Cmdlet 會在相同提供者支援的磁碟驅動器之間移動檔案,但只會在相同的磁碟驅動器內行動目錄。

由於 Move-Item 命令會移動專案的屬性、內容和子專案,因此所有行動預設都會遞歸。

此 Cmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers