Usamos uma configuração de imagem de insetos de 6 câmeras descrita aqui:https://osf.io/s2p73/
Parte do nosso fluxo de trabalho envolve renomear os arquivos de imagem para que possam ser importados para nosso banco de dados. Atualmente, fazemos isso por meio de várias etapas de "renomear par" no Utilitário de renomeação em massa e estamos procurando um único arquivo em lote do DOS que simplifique o processo. As imagens começam e ficam em duas pastas com nomes iniciais -> finais conforme abaixo. Cada dia há até 1.000 imagens na pasta 1 e as 5.000 imagens correspondentes na pasta 2 a serem processadas.
O primeiro número indica a amostra (0001/2/3/4/5 etc). O número em negrito abaixo é o número de catálogo exclusivo que precisa ser transferido para as outras 5 imagens durante a renomeação e os dois últimos números após o número de catálogo podem ser diferentes entre conjuntos de imagens.
Pasta 1: "Renomeada"
0001_ALICE1-012345678_887856_162658.jpg --> 012345678_887856_162658.jpg
Pasta 2: "Adicional"
0001_ALICE2.jpg -->012345678_lateral.jpg
0001_ALICE3.jpg -->012345678_adicional_1.jpg
0001_ALICE4.jpg -->012345678_adicional_2.jpg
0001_ALICE5.jpg -->012345678_adicional_3.jpg
0001_ALICE6.jpg -->012345678_adicional_4.jpg
o próximo conjunto de imagens seria 0002_etc e teria um diferenteCatálogo númeroa ser transferido. Qualquer ajuda seria apreciada!
Responder1
- Iterar arquivos na Pasta1 com um padrão correspondente
- divida os nomes dos arquivos base (
%%F
) em-
e_
em partes (%%A..%%E
) - use
%%C..%%E
para renomear o arquivo Alice1 - use
%%A
para renomear o outro de acordo com seu esquema
Com uma árvore inicial de pastas/arquivos de teste no meu Ramdisk A:
> tree a:\ /f
A:\
├───Additional
│ 0001_ALICE2.jpg
│ 0001_ALICE3.jpg
│ 0001_ALICE4.jpg
│ 0001_ALICE5.jpg
│ 0001_ALICE6.jpg
│
└───Renamed
0001_ALICE1-012345678_887856_162658.jpg
Este arquivo em lote:
:: Q:\Test\2019\03\30\SU_1419303.cmd
@Echo off
set "Folder1=A:\Renamed"
set "Folder2=A:\Additional"
For /f "delims=" %%F in ('
Dir /B/S/A-D "%Folder1%\????_Alice?-*_*_*.jpg
') Do For /F "tokens=1-5 delims=-_" %%A in ("%%~nF") DO (
Echo %%~nxF
Echo %%A %%B %%C %%D %%E
Ren "%%~fF" "%%C_%%D_%%E%%~xF"
Ren "%Folder2%\%%A_ALICE2.jpg" "%%C_lateral.jpg"
Ren "%Folder2%\%%A_ALICE3.jpg" "%%C_additional_1.jpg"
Ren "%Folder2%\%%A_ALICE4.jpg" "%%C_additional_2.jpg"
Ren "%Folder2%\%%A_ALICE5.jpg" "%%C_additional_3.jpg"
Ren "%Folder2%\%%A_ALICE6.jpg" "%%C_additional_4.jpg"
)
produz este resultado:
> Q:\Test\2019\03\30\SU_1419303.cmd
0001_ALICE1-012345678_887856_162658.jpg
0001 ALICE1 012345678 887856 162658
> tree a:\ /f
A:\
├───Additional
│ 012345678_additional_1.jpg
│ 012345678_additional_2.jpg
│ 012345678_additional_3.jpg
│ 012345678_additional_4.jpg
│ 012345678_lateral.jpg
│
└───Renamed
012345678_887856_162658.jpg