查找名称在时间范围内的所有文件夹

查找名称在时间范围内的所有文件夹

我有很多文件夹,它们具有以下命名约定:

  • 文件夹1(1924)
  • 文件夹2(2014)
  • 文件夹3(1999)
  • 文件夹4(2001)
  • 文件夹5(1891)

现在我想在资源管理器中移动/查找所有年份(介于 之间())低于 2000 年且高于 1900 年的文件夹

因此输出将是folder1和folder3。

是否有任何脚本可以做到这一点?

答案1

如果所有这些文件夹都在,C:\Source folder则从其自身运行以下批处理文件C:\Source folder

@echo off
set dest=D:\Target folder
for /f "tokens=1,2 delims=()" %%d in ('dir /ad /b') do (
    if %%e gtr 1900 (
        if %%e lss 2000 (
            if not exist "%dest%\%%d(%%e)\" md "%dest%\%%d(%%e)"
            robocopy "%%d(%%e)" "%dest%\%%d(%%e)" /e /is /move
        )
    )
)

答案2

下面是执行此操作的一个示例方法(假设所有目录都在同一级别)

find . -type d -name "fold*" -maxdepth 1|awk -F'[()]'  '{if ($2 > 1900 && $2 < 2000) print $0}'

如果您想在 Windows 操作系统下执行它,示例方法是使用一些 cygwin 环境(mobaxterm 也可以正常工作)并在终端中运行它。不幸的是,我的 Windows 技能非常有限,我无法将其重写为本机 cmd 脚本

相关内容