Localiza todas as pastas em que o nome está no intervalo de tempo

0

Eu tenho muitas pastas e elas têm a seguinte convenção de nomenclatura:

  • pasta1 (1924)
  • folder2 (2014)
  • folder3 (1999)
  • folder4 (2001)
  • folder5 (1891)

Agora eu adoraria mover / encontrar no Explorer todas as pastas onde o ano (entre o () ) está abaixo do ano 2000 e acima do ano 1900

Portanto, a saída seria folder1 e folder3.

Existe algum script que possa fazer isso?

    
por Kiwi 08.06.2015 / 10:27

2 respostas

2

Se todas essas pastas estiverem abaixo de C:\Source folder , execute o seguinte arquivo em lote de 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
        )
    )
)
    
por 08.06.2015 / 11:40
0

Aqui está uma forma de exemplo para fazer isso (assumindo que todos os diretórios estão em um nível)

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

Se você quiser executá-lo no sistema operacional Windows, o método samples é usar algum ambiente cygwin (também mobaxterm funciona bem) e executá-lo no terminal. Infelizmente, minhas habilidades com o Windows são muito modestas e não consigo reescrevê-lo para script cmd nativo

    
por 08.06.2015 / 10:51