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

Windows批处理文件中执行PowerShell类dir排序命令失败的问题

Windows批处理文件中执行PowerShell类dir排序命令失败的问题

看起来你踩了个典型的「环境不匹配」的坑——你的批处理文件是在**CMD(命令提示符)**环境下运行的,但Get-ChildItem是PowerShell专属的命令,CMD根本不认识它,这就是为什么会报错说它不是内部/外部命令。之前转义管道符号没用,因为根源问题不是管道的解析,而是你在错误的环境里调用了PowerShell命令。

方法一:在批处理中直接调用PowerShell执行命令

把你的.dir.bat内容改成下面这样就行:

@echo off
powershell -NoProfile -Command "Get-ChildItem | Sort-Object -Property LastWriteTime"

这里的关键参数解释一下:

  • powershell:告诉CMD启动PowerShell进程
  • -NoProfile:跳过加载PowerShell的用户配置文件,启动更快,也避免配置干扰命令执行
  • -Command:指定要在PowerShell中执行的命令字符串

如果想要显示隐藏文件,只需要给Get-ChildItem加上-Force参数:

@echo off
powershell -NoProfile -Command "Get-ChildItem -Force | Sort-Object -Property LastWriteTime"

方法二:让输出更贴近CMD的dir风格

如果觉得PowerShell默认的输出格式和CMD的dir差异太大,可以调整命令让输出更符合你的使用习惯,比如模拟dir的列布局:

@echo off
powershell -NoProfile -Command "Get-ChildItem -Force | Sort-Object LastWriteTime | Format-Table Mode, LastWriteTime, Length, Name -AutoSize"

Format-Table会把输出整理成表格形式,-AutoSize会自动调整列宽,看起来和dir的输出更像。

额外建议:用PowerShell脚本替代批处理(可选)

如果你经常用PowerShell,也可以直接写一个PowerShell脚本(比如命名为dir-sorted.ps1),内容就是:

Get-ChildItem | Sort-Object -Property LastWriteTime

之后在CMD里运行它只需输入:powershell -File .\dir-sorted.ps1,或者直接在PowerShell环境中双击/执行这个脚本。

备注:内容来源于stack exchange,提问作者nostromo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 06:39:31