|
發表於 2013-5-22 18:30:20
|
顯示全部樓層
本帖最後由 wang_966 於 2013-5-22 18:43 編輯
不同的思考邏輯導致不同的結果, 請參考附在文末的程式,
如果由 drive c 找到 drive z : for (drive='c'; drive<='z'; drive++) {
改成由 drive z 找到 drive c : for (drive='z'; drive>='c'; drive--) {
若PC中不同drive存在兩份相似的內容, 則不同的搜尋順序便會抓到不同的 drive.
=======================================================================
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <dir.h>
#include <string.h>
#include <process.h>
void main(int argc, char *argv[])
{
struct ffblk ffblk;
char drive, ttt_drv;
char vol_name[20];
FILE *fp;
if (argc > 1)
ttt_drv=argv[1][0];
for (drive='c'; drive<='z'; drive++) {
sprintf(vol_name,"%c:\\*.*",drive);
if (findfirst(vol_name,&ffblk,FA_LABEL)==0) {
if ( strncmpi(ffblk.ff_name,"MS-RAMDR.IVE",12)==0 ||
strncmpi(ffblk.ff_name,"RAMDRIVE",8)==0) {
//printf("RamDisk = %c\n",drive);
if (argc > 1)
sprintf(vol_name,"%c:setenv.bat",ttt_drv,drive);
else
sprintf(vol_name,"setenv.bat",drive);
if ( (fp=fopen(vol_name,"w")) != NULL ) {
fprintf(fp,"SET RAMDRV=%c\n",drive);
fclose(fp);
}
if (argc > 1)
sprintf(vol_name,"%c:ttt%c.mon",ttt_drv,drive);
else
sprintf(vol_name,"ttt%c.mon",drive);
if ( (fp=fopen(vol_name,"w")) != NULL ) {
fprintf(fp,"ramdrive\n");
fclose(fp);
}
exit(0);
}
}
}
printf("RamDisk not found!\n");
}
|
|