
Eu tenho muitas pastas e elas têm a seguinte convenção de nomenclatura:
- pasta1(1924)
- pasta2(2014)
- pasta3(1999)
- pasta4(2001)
- pasta5(1891)
Agora eu adoraria mover/encontrar no explorer todas as pastas onde o ano (entre ()
) está abaixo do ano 2000 e acima do ano 1900
Portanto, a saída seria pasta1 e pasta3.
Existe algum script que possa fazer isso?
Responder1
Se todas essas pastas estiverem abaixo C:\Source folder
, execute o seguinte arquivo em lote 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
)
)
)
Responder2
Aqui está um exemplo de maneira de fazer isso (assumindo que todos os diretórios estão no mesmo nível)
find . -type d -name "fold*" -maxdepth 1|awk -F'[()]' '{if ($2 > 1900 && $2 < 2000) print $0}'
Se você deseja executá-lo no sistema operacional Windows, o método de exemplo é usar algum ambiente cygwin (também o mobaxterm funciona bem) e executá-lo no terminal. Infelizmente, minhas habilidades no Windows são muito modestas e não consigo reescrevê-lo para script cmd nativo