【问题标题】:How do I delete all folders that don't end in a string, using batch?如何使用批处理删除所有不以字符串结尾的文件夹?
【发布时间】:2020-08-31 07:02:21
【问题描述】:

我有一个简单的备份脚本,它每天将一个文件夹复制到备份目录,格式为Backup-YYYY-MM-DD。

我想制作另一个脚本,该脚本将删除所有不是从该月的第一天开始的备份(除了匹配“Backup-YYYY-MM-01”的所有备份)

我似乎找不到这样做的方法,我发现的一切与我想要的相反:
only delete those ending in x
这并没有真正的帮助。
或者使用临时文件夹:
move *-01 to 'temp', then delete all remaining folders
这并不理想,因为文件很大。

提前致谢

【问题讨论】:

  • 您需要使用DIR 命令获取目录列表并将其通过管道传递给FINDSTR 命令以过滤结果。所有这些都可以使用FOR /F 命令捕获,以便您可以删除相应的文件夹。
  • 如果由于某种原因在任何特定月份的第一天没有进行备份,会发生什么情况。这可能是 PC/服务器问题、非工作/假期等。在这些情况下,您可能需要 …-02、…-03 等。更明智的方法是建议您保留每个月的第一个备份,无论日期如何,最好也是最后一个生产的!

标签: windows batch-file backup


【解决方案1】:

未经测试

这当然很危险

for /f %%a in ('dir /ad /b *^| findstr /v 01$') do rd /s /q "%%~a"

我会先do echo rd /s /q "%%~a" 看看你会用这个命令做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多