尋找名稱在時間範圍內的所有資料夾

尋找名稱在時間範圍內的所有資料夾

我有很多資料夾,它們具有以下命名約定:

  • 文件夾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 腳本重寫它

相關內容