[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 CrLf 于 2015-5-19 17:48 编辑

可以不用临时文件,该方案可以模拟 WSH:http://www.bathome.net/thread-34109-1-1.html

其实这种明显是结构体的数据库,用 c 语言可能更合适:
  1. //tcc 编译后,以 程序名.exe 数据库名.db 查看数据库
  2. #include <stdio.h>
  3. typedef   unsigned char   BYTE;
  4. struct data
  5. {
  6. BYTE head1[3];
  7. BYTE index;
  8. BYTE head1[2];
  9. char text[50];
  10. BYTE head1[1];
  11. BYTE section;
  12. };
  13. main(int argc, char **argv){
  14. int i;
  15. FILE *fp;
  16. struct data db;
  17. for(i=1;i<argc;i++){
  18. fp = fopen(argv[i],"rb");
  19. fseek(fp,22,SEEK_SET);
  20. while(!feof(fp)){
  21. if(!fread(&db,sizeof(db),1,fp))break;
  22. printf("第 %d 章,%s,拥有节数 %d\n",db.index,db.text,db.section);
  23. }
  24. fclose(fp);
  25. }
  26. }
复制代码
之前碰到过另一种文件格式,只有数据头和数据尾标记的,而且编码混杂,c 做起来不方便,最后用 ado 配合 vbs 正则了...

TOP

如果只需要 text 值的话,也可以暴力点,利用 more 将 \0 转为 \r\n,再用 sed 过滤
  1. more bin.db | sed -r "s/^.{,3}//g;/^$/d" | more
复制代码

TOP

返回列表