時間範囲内の名前を持つすべてのフォルダを検索

時間範囲内の名前を持つすべてのフォルダを検索

フォルダーは多数あり、命名規則は次のとおりです。

  • フォルダ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

これを行うためのサンプル方法を以下に示します (すべてのディレクトリが 1 つのレベルにあると仮定)

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

Windows OSで実行したい場合、サンプルの方法は、cygwin環境(mobaxtermでも問題なく動作します)を使用してターミナルで実行することです。残念ながら、私のWindowsスキルは非常に低く、ネイティブのcmdスクリプトに書き直すことはできません。

関連情報