You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止PowerShell默认排序?Get-ChildItem的LastWriteTime参数无效

如何阻止PowerShell默认排序,保持文件原始显示顺序

嘿,我之前也碰到过一模一样的问题!PowerShell里的Get-ChildItem确实会默认按文件名排序,这有时候会打乱我们想要的目录原始顺序——尤其是你这种文件名除了末尾数字都相同的场景,哪怕正常数字排序看起来没问题,但如果有位数差异(比如document10.doc会排在document2.doc前面),或者你就是要严格遵循文件夹里的显示顺序,就得绕开这个默认行为。

下面给你两个实用的解决办法:

方法一:用.NET原生方法(兼容所有PowerShell版本)

.NET的[System.IO.Directory]类提供的文件读取方法不会自动排序,会直接返回文件系统存储的原始顺序。如果只需要文件路径字符串,直接这么写:

# 替换成你的目标目录路径
$filePaths = [System.IO.Directory]::GetFiles("C:\Your\Target\Folder")

如果需要拿到和Get-ChildItem一样的FileInfo对象(方便后续操作文件属性),可以把路径转成对象:

$files = [System.IO.Directory]::GetFiles("C:\Your\Target\Folder") | ForEach-Object { Get-Item $_ }

方法二:PowerShell 7+专属的简洁方案

如果你已经升级到PowerShell 7或更高版本,Get-ChildItem新增了-Sort参数,直接设为$null就能禁用默认排序,一步到位:

$files = Get-ChildItem -Path "C:\Your\Target\Folder" -Sort $null

另外得说一下,你之前用-LastWriteTime没效果是正常的——这个参数是用来筛选文件的(比如只获取最近7天修改的文件),不是用来控制排序的。如果要自定义排序得用Sort-Object,但你要的是原始顺序,所以完全不需要额外排序操作,只要阻止PowerShell的默认排序就行。

内容的提问来源于stack exchange,提问作者scot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:28:23