Utilizamos una configuración de imágenes de insectos de 6 cámaras que se describe aquí:https://osf.io/s2p73/
Parte de nuestro flujo de trabajo implica cambiar el nombre de los archivos de imagen para que puedan importarse a nuestra base de datos. Actualmente hacemos esto a través de múltiples pasos de "cambio de nombre de par" en Bulk Rename Utility y estamos buscando un único archivo por lotes de DOS que simplifique el proceso. Las imágenes comienzan y permanecen en dos carpetas con nombres iniciales --> finales como se muestra a continuación. Cada día hay hasta 1000 imágenes en la carpeta 1 y las 5000 imágenes correspondientes en la carpeta 2 para procesar.
El primer número indica el espécimen (0001/2/3/4/5, etc.). El número en negrita a continuación es el número de catálogo único que luego debe transferirse a las otras 5 imágenes durante el cambio de nombre y los dos últimos números después del número de catálogo pueden ser diferentes entre conjuntos de imágenes.
Carpeta 1: "renombrada"
0001_ALICE1-012345678_887856_162658.jpg --> 012345678_887856_162658.jpg
Carpeta 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
el siguiente conjunto de imágenes sería 0002_etc y tendría un formato diferentecatalogar númeroser transferido. ¡Cualquier ayuda sería apreciada!
Respuesta1
- Iterar archivos en la Carpeta1 con un patrón coincidente
- dividir los nombres de los archivos base (
%%F
) en-
y_
en partes (%%A..%%E
) - utilizar
%%C..%%E
para cambiar el nombre del archivo Alice1 - Úselo
%%A
para cambiar el nombre del otro según su esquema
Con un árbol inicial de carpetas/archivos de prueba en mi 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 archivo por lotes:
:: 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"
)
arroja 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