/* Pro136F.c */
/* "6Rename.Exe" */
/* Automatic Rename Batch generator as a Finalizing polish.
The Batch will return Original Long foldernames. */
/* Read 'LOOKUP.TXT' */
/* Write 'RENAME.BAT' */
/* This C program is a variation of 'Pro136C.c' which automatically
generate DOS-Batch program after it captures Directory names. */
/* (2005-02-06) I realized that I can't make the RENAME.BAT
* directly from "DIR.TXT", but I should read from "LOOKUP.TXT"
* which tells,
* catlg001.txt <=> The First Long filename folder.
* catlg002.txt <=> The second Foldername Original.
* catlg003.txt <=> The Third Foldername of Scanning.
* Then, I can grab both the Catalog number and its Original name
* simultaneously, so that I can write "RENAME.Bat".
* So, I will re-structure this to,
* 1. Eliminate Reading "DIR.Txt", to write "Header.Txt"
* 2. Eliminate Reading "DIR.Txt", to write "OUT-Head.Txt"
* 3. Read "LOOPUP.Txt", write "RENAME.Bat".
*/
/* However, making "LOOKUP.TXT" will be a little complicated, because
* I want to introduce the Switch of filename column positions.
* 1. Win3.1 [0]
* 2. Win95/98, WinNT likely [44]
* 3. WinXP [39]
* Right now, I am thinking optional 1, 2, 3 switch.
* Also I need to keep the ROOT and SUB-DIRECTORY difference switch.
*/
#include <stdio.h>
#include <string.h>
char inline [256];
char id [128], originalName [128];
extern char *firstwd (char *to, char *from); /* Recycling Object 'firstwd()' */
extern char *spacedwd (char *to, char *from); /* Modified Recycling Object */
void main(void){
char strPause[16];
FILE *infp, *outfp3;
/* Actually, "LOOKUP.TXT" is simpler */
/* to deal with, becuase it should have been already processed */
/* and designed to be read here. */
printf("This makes Rename Batch files \"Rename.Bat\". While this \n");
printf("program is written in an old C-Compiler, and couldn't handle \n");
printf("long filenames, by the help of \"LoopUp.Txt\" and DOS-Batch \n");
printf("executable file, we can rewrite all cataglos and DIFF reports back \n");
printf("to orignal folder names, if you wish. This is an optional step \n");
printf("for our convenience. To do this, double click \"Rename.Bat\".\n\n");
printf("If it is not created, check if 'LookUp.Txt' is in this temporary \n");
printf("directory.\n\n");
printf("Type any character key and [ENTER] to close this message: ");
scanf("%s", &strPause);
/* ======== THIS WAS THE THIRD SET, SUDDENLY THE FIRST OUTPUT FILE ============= */
infp=fopen("LOOKUP.Txt", "r");
outfp3=fopen("RENAME.BAT", "w");
/* At here, I need a switch of Five, SDW, ZIP, SDW\Erased, ZIP\Erased, DIFF */
/* If I make a Sub-routine, only Five times of directory changes, and */
/* doing many Renamings. */
/* Alternatively, I can write a set of Five RENAME here at different locations, */
/* while RENAME command lines are jumping around Five folders all the time. */
/* by "Change Directory (CD)". I tried the latter way and it is just fine. */
/* Without Changing Directory, the DOS-Batch command didn't work. */
/* Only the First Line, it is current directory, no "CD .." at first. */
fgets(inline, 256, infp);
firstwd(id, &inline[2]); spacedwd(originalName, &inline[18]);
fprintf (outfp3, "CD SDW\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\ZIP\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\SDW\\Erased\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\..\\ZIP\\Erased\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\..\\DIFF\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
/* The Second Line and Later */
while(fgets(inline, 256, infp)!=NULL){
firstwd(id, &inline[2]); spacedwd(originalName, &inline[18]);
fprintf (outfp3, "CD ..\\SDW\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\ZIP\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\SDW\\Erased\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\..\\ZIP\\Erased\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
fprintf (outfp3, "CD ..\\..\\DIFF\n");
fprintf (outfp3, "RENAME %s.Txt \"%s.Txt\"\n", id, originalName);
}
fclose (infp);
fclose (outfp3);
}