【问题标题】:delete files in multiple subfolders with batch批量删除多个子文件夹中的文件
【发布时间】:2019-07-29 06:48:22
【问题描述】:

我有一个像这样的目录

“C:\sales\client1\file1”。

client1 文件夹不是静态的,可以在 client1 到 client100 之间变化,并且客户端文件夹中的每个文件都可以在 file1 到 file8 之间变化。

我想使用批处理删除每个客户端文件夹中的 4 个特定文件(例如 file1、file3、file6 和 file8),基于超过 7 天 (d-7) 的掩码 (/m file1*)。

到目前为止,我尝试过的每个解决方案都适用于指定目录

谢谢

【问题讨论】:

  • Stack Overflow 不是脚本编写服务,到目前为止您尝试过什么? edit 你的问题包含在minimal reproducible example 中。
  • 是的,如果您注意到我说过我尝试的每个解决方案都只适用于给定路径,我的问题是更改子文件夹而无需为每个文件夹添加一行。
  • 本网站希望您提供您尝试过的导致您报告的问题的代码。如果您尝试了多个解决方案,请务必发布这些尝试并准确解释在运行每个解决方案时会发生什么,这与您的预期不同。

标签: batch-file cmd forfiles


【解决方案1】:

因为你的掩码是一个文件,@path 将包含文件名,

您必须 cd 到带有 \.. 附加到它的文件夹 @path\..

那就试试吧:

 forfiles /P C:\Sales /S /M file1* /D -7 /C "cmd.exe /c @cd /D @path\..&del file1 file3 file6 file8"

此命令还将直接在C:\Sales中找到符合条件的file1

使用 PowerShell 的更精简的解决方案

Get-ChildItem "C:\Sales\Client*\file1" -File | 
  Where LastWriteTime -lt (Get-Date).Date.AddDays(-7)| 
    ForEach-Object {
      PushD $_.Directory
      Remove-Object file[1368]
      PopD
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多