//Created 2004, Oregon Embedded Development
//Freeware--Use in any manner you wish.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
//Compiled & Linked with MSVC
BOOL EnumerateDirectory(BYTE* Extension,BYTE* Preamble)
{
BYTE Filetype[20];
WORD j,NumFiles;
WIN32_FIND_DATA FindFileData;
HANDLE h;
BYTE Original[3000][100];
BYTE EnumeratedAs[100];
if (Extension[0]==0)
{
printf("ERROR: File extension must be explicit.\r\n");
return(FALSE);
}
NumFiles=0;
sprintf(Filetype,"*.%s",Extension);
h=FindFirstFile(Filetype,&FindFileData);
if (h!=INVALID_HANDLE_VALUE)
{
do {
strcpy(Original[NumFiles],FindFileData.cFileName);
if (NumFiles<2900) NumFiles++;
} while (FindNextFile(h,&FindFileData));
FindClose(h);
}
for (j=0;j<NumFiles;j++)
{
sprintf(EnumeratedAs,"%s%d.%s",Preamble,j+1,Extension);
printf(" %s -> %s\r\n",Original[j],EnumeratedAs);
rename(Original[j],EnumeratedAs);
}
return(TRUE);
}
void main (int argc,char** argv)
{
BYTE b;
BYTE Preamble[100];
BYTE Extension[100];
//int j;
//printf("Argument count=%d\r\n",argc);
//for (j=0;j<argc;j++) printf("%d = %s\r\n",j,argv[j]);
printf("File enumerator v1.0\r\n");
if (argc==1)
{
printf("SYNTAX: ENUM type [preamble]\r\n");
printf("\r\n");
printf("EXAMPLE: enum jpg\r\n");
printf("(This would enumerate all the jpeg files in a\r\ngiven directory as 1.jpg to n.jpg)\r\n");
printf("\r\n");
printf("EXAMPLE: enum jpg HIST\r\n");
printf("(This would enumerate all the jpeg files in a\r\ngiven directory as HIST1.jpg to HISTn.jpg)\r\n");
printf("\r\n");
return;
}
Preamble[0]=0;
strcpy(Extension,argv[1]);
if (argc==3) strcpy(Preamble,argv[2]);
printf("Renaming files *.%s to %sn.%s\r\n",Extension,Preamble,Extension);
printf("Proceed (Y/N)? ");
do {
b=getch();
if (b=='y') b='Y';
if (b=='n') b='N';
} while ((b!='Y')&&(b!='N'));
if (b=='N') {printf("No.\r\n");return;}
printf("Yes.\r\n\r\n");
EnumerateDirectory(Extension,Preamble);
printf("Finished!\r\n");
}