Move-Item
將項目從某個位置移動到另一個位置。
Syntax
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
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”*.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 中,使用 Cmdlet 的 Get-ChildItem
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” 金鑰的內容,而不是密鑰本身。 在此命令中,會省略選擇性 的Path 和 Destination 參數名稱。
Move-Item "HKLM:\software\mycompany\*" "HKLM:\software\mynewcompany"
範例 6:將目錄及其內容移至指定目錄的子目錄
此命令會將 “Logs[Sep'06]” 目錄 (及其內容) 移至 “Logs[2006]” 目錄。
LiteralPath 參數是用來取代 Path,因為原始目錄名稱包含左括弧和右括號字元, (“[” 和 “]”) 。 路徑也會括在單引號 (' ') 中,因此不會誤譯倒單引號 (`)。
Destination 參數不需要常值路徑,因為 Destination 變數也必須以單引號括住,因為它包含可錯誤解譯的括號。
Move-Item -LiteralPath 'Logs[Sept`06]' -Destination 'Logs[2006]'
參數
-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"。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
以提供者的格式或語言指定篩選。 此參數的值會限定 Path 參數。
篩選的語法 (包括是否使用萬用字元) 取決於提供者。 篩選比其他參數更有效率,因為提供者會在 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"。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
指定項目之目前位置的路徑。 與 Path 參數不同,LiteralPath 的值將完全依照其輸入值來使用。 沒有字元會被視為萬用字元。 如果路徑包含逸出字元,請將它括在單引號中。 單引號會指示PowerShell不要將任何字元解譯為逸出序列。
Type: | String[] |
Aliases: | PSPath |
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 |
-UseTransaction
將命令加入使用中交易。 只有交易為處理中狀態時,此參數才有效。 如需詳細資訊,請參閱 about_Transactions。
Type: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
顯示執行 Cmdlet 後會發生的情況。 Cmdlet 並不會執行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以使用管線將包含路徑的字串傳送至此 Cmdlet。
輸出
None or an object representing the moved item.
當您使用 PassThru 參數時,此 Cmdlet 會產生代表已移動項目的物件。 否則,此 Cmdlet 不會產生任何輸出。
備註
此 Cmdlet 會在相同提供者支援的磁碟驅動器之間移動檔案,但只會在相同的磁碟驅動器內行動目錄。
Move-Item
由於命令會移動專案的屬性、內容和子專案,因此預設會遞歸所有移動。
此 Cmdlet 是針對與任何提供者公開的資料搭配使用所設計。
若要列出工作階段中可用的提供者,請輸入 Get-PSProvider
。
如需詳細資訊,請參閱 about_Providers。