(PowerShell)檔案與目錄操作(建立、複製、搬移、刪除)

檢查檔案/目錄是否存在

使用Test-Path指令檢查,存在傳回True,不存在傳回False

1
2
3
4
# 檢查檔案是否存在
Test-Path -Path "D:\Logfiles\xxx.log"
# 檢查目錄是否存在
Test-Path -Path "D:\Logfiles"

檢查是路徑是檔案或是目錄

1.可使用Test-Path-FileType參數來判斷,用Leaf檢查是否是檔案,或用Container來檢查是否為目錄

1
2
3
4
5
6
7
8
Test-Path -Path "D:\Logfiles\xxx.log" -PathType Leaf
# True
Test-Path -Path "D:\Logfiles\xxx.log" -PathType Container
# False
Test-Path -Path "D:\Logfiles" -PathType Leaf
# False
Test-Path -Path "D:\Logfiles" -PathType Container
# True

2.使用System.IO.DirectoryInfo來判斷是否為目錄

1
2
3
4
$(Get-Item "D:\Logfiles\xxx.log") -is [System.IO.DirectoryInfo]
# False
$(Get-Item "D:\Logfiles") -is [System.IO.DirectoryInfo]
# True

3.使用PSIsContainer判斷

1
2
3
4
$(Get-Item "D:\Logfiles\xxx.log").PSIsContainer
# False
$(Get-Item "D:\Logfiles").PSIsContainer
# True

建立檔案/目錄

建立新目錄或一個新的空白檔案,可使用New-Item指令

1
2
3
4
# 建立新目錄
New-Item "D:\LogArchive" -ItemType "Directory"
# 建立新空白檔案,像是LINUX系統的touch指令
New-Item "D:\LogArchive\xxx.bak" -ItemType "File"

複製檔案/目錄

複製單一檔案

1
2
3
4
# 複製檔案
Copy-Item "D:\Logfiles\xxx.log" -Destination "D:\Logfiles\xxx.bak"
# 複製檔案到指定目錄
Copy-Item "D:\Logfiles\xxx.log" -Destination "D:\LogArchive"

複製目錄下所有資料

複製整個目錄(連同裡面的所有檔案),需加上Recurse參數,若未加上Recurse參數,只會複製Logfiles下面這一層的檔案與子目錄,但子目錄內檔案不會複製

1
Copy-Item "D:\Logfiles\*" -Destination "D:\LogArchive" -Recurse

搬移檔案/目錄

使用Move-Item指令,-Destination參數使用方法同Copy-Item

1
Move-Item "D:\Logfiles\xxx.log" -Destination "D:\LogArchive\xxx.bak"

刪除檔案/目錄

使用Remove-Item指令

1
2
3
4
# 刪除檔案
Remove-Item "D:\LogArchive\xxx.bak"
# 刪除目錄
Remove-Item "D:\LogArchive"

確認路徑是否為UNC路徑