使用 PowerShell 指令稿建立、複製、搬移與刪除檔案或目錄的方法,並提供各種常用的範例。
檔案的操作與管理是使用者或管理者都時常會遇到的工作,當要處理的檔案數量很多的時候,如果能善用 PowerShell 的指令稿,自動化處理重複繁瑣的工作,可以節省我們很多的力氣與時間,以下是在 PowerShell 中常見的一些檔案與資料夾操作方法。
如果想要檢查指定位置的檔案或目錄是否存在,可以使用 Test-Path
這個指令:
# 檢查檔案是否存在 Test-Path -Path C:\OfficeGuide\MyFile.txt
True
若指定的檔案或目錄存在,則 Test-Path
會傳回 True
,若不存在的話,則會傳回 False
,所以通常我們會搭配 if
判斷式一起使用:
# 使用 if 判斷式 if (Test-Path -Path C:\OfficeGuide\MyFile.txt) { "檔案存在。" } else { "檔案不存在。" }
檔案存在。
檢查目錄是否存在的方式跟檔案的做法相同:
# 檢查目錄是否存在 if (Test-Path -Path C:\OfficeGuide) { "目錄存在。" } else { "目錄不存在。" }
目錄存在。
Test-Path
可以判斷檔案或目錄是否存在,如果要分別一個路徑是檔案還是目錄,可以使用 Get-Item
取得該路徑的資訊,然後依據該資訊檢查是否為目錄:
# 判斷路徑是否是目錄 if ((Get-Item C:\OfficeGuide) -is [System.IO.DirectoryInfo]) { "此路徑是目錄。" } else { "此路徑不是目錄。" }
若要建立一個新的目錄,可以使用 New-Item
指令:
# 建立新目錄 New-Item C:\MyFolder -ItemType "directory"
若要建立一個新的空白檔案,也是用類似的作法:
# 建立新檔案 New-Item C:\MyFolder\MyFile.txt -ItemType "file"
若要複製檔案,可以使用 Copy-Item
指令:
# 複製檔案 Copy-Item C:\MyFile.txt -Destination C:\MyFile2.txt
若要將檔案複製到指定的目錄下(檔案名稱維持不變),則 -Destination
就指定為目的目錄的路徑即可:
# 複製檔案至指定目錄 Copy-Item C:\MyFile.txt -Destination D:\MyFolder
如果要複製整個目錄(連同裡面的所有檔案),則要加上 -Recurse
參數:
# 複製目錄 Copy-Item C:\OfficeGuide -Destination C:\OfficeGuide2 -Recurse
若要複製的目的檔案已經存在,而且是一個唯讀檔案的話,在複製檔案時就會失敗,若要強制複製檔案,可以加上 -Force
參數:
# 強制複製檔案 Copy-Item C:\MyFile.txt -Destination C:\MyFile2.txt -Force
若要搬移檔案,可以使用 Move-Item
指令:
# 搬移檔案 Move-Item C:\MyFile.txt -Destination D:\MyFile2.txt
若要搬移檔案至指定目錄(檔案名稱維持不變),則 -Destination
就指定為目的目錄的路徑即可:
# 搬移檔案至指定目錄 Move-Item C:\MyFile.txt -Destination D:\MyFolder
搬移目錄的作法也相同:
# 搬移目錄 Move-Item C:\MyFolder -Destination D:\
若要移除檔案,則可使用 Remove-Item
指令:
# 移除檔案 Remove-Item C:\MyFolder\MyFile.txt
移除目錄的作法也相同:
# 移除目錄 Remove-Item C:\MyFolder
若要移除的目錄中還有其他的檔案,則在移除的時候 PowerShell 會詢問使用者是否要全部移除,如果不想讓它詢問,可以加上 -Recurse
參數,這樣它就會自動把所有裡面的資料一次刪除:
# 移除目錄(不詢問、直接移除) Remove-Item C:\MyFolder -Recurse