
У меня много папок, и они имеют следующий формат именования:
- папка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