
フォルダーは多数あり、命名規則は次のとおりです。
- フォルダ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スクリプトに書き直すことはできません。