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