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

PowerShell脚本问题:如何删除MyDocuments下除指定文件外的所有文件

问题分析与解决方案

你的命令存在两个关键问题,导致所有文件被误删:

  1. 文件名拼写错误:你写的是office.xlxs,但Excel文件的正确后缀是xlsx(字母顺序为x-l-s-x),这使得过滤条件$_.Name -ne "office.xlxs"无法匹配到目标文件,所有文件都被判定为需要删除。
  2. Remove-Item参数错误:
    • 无需手动指定-Path $_.FullName:管道会自动将Get-ChildItem输出的文件对象传递给Remove-Item,此时$_.FullName在Remove-Item的参数上下文里无效,反而会导致命令行为异常。
    • 多余的-Recurse:你已经用-File参数限定只获取文件,-Recurse是用于递归删除目录的,在这里完全没必要,甚至可能引发意外操作。

正确命令

情况1:仅删除MyDocuments顶层目录的文件(不包含子目录内的文件)

Get-ChildItem -Path ([Environment]::GetFolderPath("MyDocuments")) -File | Where-Object { $_.Name -ne "office.xlsx" } | Remove-Item -Force

情况2:删除MyDocuments及所有子目录内的文件(同时保留所有目录下的office.xlsx)

如果需要处理子目录里的文件,给Get-ChildItem加上-Recurse参数即可:

Get-ChildItem -Path ([Environment]::GetFolderPath("MyDocuments")) -File -Recurse | Where-Object { $_.Name -ne "office.xlsx" } | Remove-Item -Force

额外提示

  • -Force参数用于删除只读文件,如果不需要删除只读文件,可以去掉该参数。
  • 建议先移除Remove-Item -Force部分,单独运行Get-ChildItem | Where-Object命令,确认输出的是你想要删除的文件后,再执行完整命令避免误删。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:20:59