uncategorized

Powershell刪除檔案和更改檔名

之前在研討會曾提過,要把自動化程序搞好,善用PowerShell是不可少的,尤其在企業內部的管理面上,不使用PowerShell感覺還是卡卡的。在這邊分享如何用PowerShell去更改檔案名稱以及把過期檔案給刪除

更改檔案名稱


抓取某個資料夾中指定的副檔名,並修改成自己想要的副檔名。透過Get-ChildItem把該資料夾內的檔案列表抓出來。其中,為了讓整個.ps更靈活,所以,這邊採用$args[0]讓外部可以輸入參數進來

1
$file=Get-ChildItem -Path $args[0] -File

這邊主要抓取該資料夾中副檔名為.dll的檔案,如果是.dll就把副檔名變更成.XXX,其中,使用BaseName抓取檔名,用Extension取得副檔名

1
2
3
4
5
6
7
8
ForEach ($item in $file)
{
if ($item.Extension -eq '.dll')
{
$newFileName= $item.BaseName+'.XXX'
Rename-Item $item.FullName $newFileName
}
}

使用Rename-Item修改檔案名稱,其語法如下,FullName是取得檔名+副檔名

1
Rename-Item 原始檔名 新黨案名稱

這樣就可以修改檔案名稱

刪除備份檔案


刪除備份檔案,主要動作就是透過PowerShell刪除檔案,其做法跟前面修改檔名方式相同,也是必須透過Get-ChildItem取得該資料夾檔案列表,因為,要判對檔案的最後修改日期是否有過期,所以,必須抓取今日時間,語法如下

1
$Currentlytime=Get-Date

有了現在時間後,就是判斷檔案最後修改時間,藉由LastWriteTime抓取檔案最後修改時間,利用AddDays可以對$Currentlytime做時間的運算

1
2
3
if($item.LastWriteTime -ile $Currentlytime.AddDays($args[1])) {
Remove-Item $item.FullName | out-null
}

若是要刪除30天前的檔案,外部輸入就設定-30,這樣就可以把-30值帶入時間運算。然後,再用Remove-Item把檔案給刪除,這裡需要使用fullName才可以,完整範例

1
2
3
4
5
ForEach ($item in $file) {
if( $item.LastWriteTime -ile $Currentlytime.AddDays($args[1])) {
Remove-Item $item.FullName | out-null
}
}