【问题标题】:Deleting unwanted files and folders using a Powershell script使用 Powershell 脚本删除不需要的文件和文件夹
【发布时间】:2020-11-25 04:32:37
【问题描述】:

我是 Powershell 的新手,我一直在玩控制台中的一些基本命令,现在我想尝试进一步提高我的技能并创建一个脚本来为我完成一些基本任务。

在我的电脑上,我有很多不需要的文件和文件夹。

我有多个名为“program.exe”的文件存在于不同的目录中,我还有一个名为“info.pdf”的文件存在于多个不同的文件夹中。

如何编写脚本以删除具有特定名称和扩展名的文件,并删除该文件所在的目录,我正在研究使用 -Recursive 参数但不想要它删除任何不应该意外的内容。

目前,这些是我一直尝试在 PowerShell 脚本中使用的命令

Get-Location
$targetdirectory = /*


Get-ChildItem *program.exe 
Get-ChildItem *info.pdf

Remove-Item /program.exe
Remove-Item /info.pdf

我有点不确定语法以及将这些命令按什么顺序放置才能成功,如果我希望我的脚本在当前目录和其他目录中查找,我只需使用 = /*?

我怎样才能让脚本删除那些特定的文件名,然后删除它所在的文件夹。

谢谢!

【问题讨论】:

标签: powershell


【解决方案1】:

首先,您肯定需要-Recurse 参数。其次Remove-Item支持-WhatIf参数,但不是所有的CmdLets都支持,所以最好先检查你的选择(运行第一行,然后检查$FilesToRemove,然后运行第二行):

$FilesToRemove = Get-ChildItem /* -Include 'program.exe','info.pdf' -Recurse -ErrorAction Ignore
Remove-Item -Path $FilesToRemove -WhatIf

删除-WhatIf 以进行实际删除。如果您的文件位于特定路径下,您可以使用替换例如。 /home/*,只要确保你以/*结束任何路径。

【讨论】:

  • 非常感谢您的指导,帮助很大。如果我不在 Windows PC 上并且使用 Mac,我可以简单地执行“*”还是我仍然需要在之前包含与 mac 等效的“C:”位,我知道 Mac 不使用 C,它只是使用 /home/ 等...但只使用“*”也可以工作吗?
  • @harris9050 抱歉,错过了那部分。只需将它替换为/*,它应该可以工作。我会更新答案。
猜你喜欢
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
相关资源
最近更新 更多