как насчет:
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($_)}