北京高端写字楼有哪些:怎么在DOS下对文件进行随机命名 ????

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 17:04:56
最好是以日期形式(精确到分钟),必须是在DOS下,或谁编一个小程序也可以,我要做一个自动批处理,把不同的文件压缩成包后放到一个目录里!!谢谢
到时候追加50分!!!!

给你写了C程序,我用VC++编译后在Windows XP上工作良好。C程序生成新文件名,COPY 一个现有文件到生成新文件名内。

若把COPY变RENAME, 就做换名字:
sprintf(my_cmd,"COPY %s %s\0",namein,nameout);
sprintf(my_cmd,"REN %s %s\0",namein,nameout);
新文件名现在用到秒,没加扩展名,要加自己加。
新文件名存在 nameout 中。
system(..)是执行DOS命令,其实,所有的.bat命令行都可放在C程序内做,一个命令一个system(..)调用。

用法:
C程序,编译后,例如叫 a.exe
压好的文件,例如叫 pp.dat
如果 a.bat 中内容是:

REM ----------
a.exe pp.dat
REM 做第二个压缩包 也叫 pp.dat
a.exe pp.dat
REM 做第三个压缩包 若叫 pp3.dat
a.exe pp3.dat

-----------------------------------
C程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

FILE *fout;
main(int argc, char *argv[])
{
char nameout[80],namein[80];
time_t now;
char time_string[32];
char month[4];
int yyyy,mmm,dd,hh,mm,ss;
char my_cmd[120];

if (argc < 2){
fprintf(stderr,"Usage %s name_compressed_file\n",argv[0]);
exit(1);
};
strcpy(namein,argv[1]);
time(&now);
strcpy(time_string,ctime(&now));
sscanf(time_string,"%*s %s %d %d:%d:%d %d", &month,&dd,&hh,&mm,&ss,&yyyy);
sprintf(nameout,"%d_%s%02d%02d%02d%02d%\0",yyyy,month,dd,hh,mm,ss);
// fprintf(stderr,"%s",nameout);
sprintf(my_cmd,"COPY %s %s\0",namein,nameout);
fprintf(stderr,"doing %s\n",my_cmd);
system(my_cmd);
exit(0);
}