2009-02-20 47 views
3

什麼是從文件夾中刪除所有文件的最簡潔的方式除了 PowerShell腳本中的一個文件。我保留哪個文件並不重要,只要保留一個即可。PowerShell - 「從這個文件夾中刪除所有文件除外」的最緊湊方法

我正在使用PowerShell 2 CTP。

UPDATE:
到目前爲止,所有的答案的融合......

$fp = "\\SomeServer\SomeShare\SomeFolder" 
gci $fp |where {$_.mode -notmatch "d"} |sort creationtime -desc |select -last ((@(gci $fp)).Length - 1) |del 

任何人看到與使用此的任何問題? -notmatch部分如何?

+0

我沒有問題本身與-noMatch檢查。我認爲更多的PS方式將是{-not $ _。PSIsContainer} – EBGreen 2009-02-23 18:40:51

回答

9

在PS V2中,我們添加了-SKIP來選擇,因此您可以這樣做:

dir |其中{$ _模式-notmatch 「d」} |選擇-skip 1 |德爾

0

del -exclude(dir | sort creationtime -desc)[0] -whatif

這將刪除除最近創建的文件以外的所有文件。

+0

我認爲這會讓文件夾比所有文件更新。 – EBGreen 2009-02-20 16:58:34

+0

嗯。它將不得不留下一個文件。文件夾/子文件夾需要保持不變。 – BuddyJoe 2009-02-20 17:02:55

1

怎麼樣:

dir $dirName | select -first ((dir $dirName).Length -1) | del 

刪除所有,但最後一個。

編輯:更靈活的版本,再加上你將不必重複輸入dir命令:

$include=$False; dir $dirNam | where {$include; $include=$True;} | del 

注意,這則正好相反,它會刪除所有,但第一。它還允許您添加條款,如不採取行動的目錄:

$include=$False; dir $dirNam | where {$include -and $_.GetType() -ne [System.IO.DirectoryInfo]; $include=$True;} | del 

編輯2與問候,用Mode屬性不包括目錄。我想這應該工作,只要框架不改變模式字符串的生成方式(我無法想象它會)。雖然我可能會收緊正則表達式:

$_.Mode -notmatch "^d.{4}" 

如果你正試圖避免打字,增加了功能,以您的個人資料是你最好的選擇:

function isNotDir($file) { return $file.GetType() -ne [System.IO.DirectoryInfo];} 
dir $dirName | where {isNotDir($_)} 
+0

如何指定路徑並使其成爲一行代碼? – BuddyJoe 2009-02-20 17:11:55

+0

請注意,這個也會刪除文件夾。 – EBGreen 2009-02-20 17:12:44

4

沒有任何內置的功能它有點令人費解,因爲函數需要處理確定的長度。但是你可以這樣來做這涉及到查找目錄兩次

gci $dirName | select -last ((@(gci $dirName)).Length-1) | del 

我寫了幾PowerShell的擴展,使得像這樣輕鬆了許多任務。一個例子是Skip-Count,它允許在流水線中跳過任意數量的元素。因此,代碼可以快速地搜索到只能看目錄一次

gci $dirName | skip-count 1 | del 

源到跳至數:http://blogs.msdn.com/jaredpar/archive/2009/01/13/linq-like-functions-for-powershell-skip-count.aspx

編輯

爲了殺死文件夾使用「RM -re - FO」,而不是 「德爾」

EDIT2

爲了避免所有的文件夾(空或不),你可以修改代碼,這樣

gci $dirName | ?{ -not $_.PSIsContainer } | skip-count 1 | del 

的PSISContainer成員只對文件夾的真實。

1

我最喜歡的:

move file to preserve elsewhere 
delete all files 
move preserved file back 
相關問題