我经常对很多图片进行操作,所以经常要导出大批量图片的名字到txt文件里保存起来供后续批量处理图片。
我的方法是,假如你大量的图片存储在d:/img/里,那么你用鼠标选中img 文件夹,按住shift键,右键在此处打开命令窗口。
键入 TREE /F >d:\list.txt
这样在D盘就会生成一个list.txt文件,不过要手动删掉首尾的一些字和空行,这样剩下每一行的图片名字前都有空行,下面我贴出来我在网上找到的的用来去除这些空格的代码。
//
//本程序用于将文件中的多余空格去除并保存到另一文件中 #include <iostream> #include <fstream> void alltrim(char *); using namespace std; void alltrim(char *str) { char *p=str,*q=str; bool notSpace=false; while(*q==' ') q++; while(*q!='\0') { if (*q!=' ') { notSpace=true; *p++=*q++; // 不是空格,复制 } else if (notSpace) //是空格,但目前是第一个(因为之前notSpace=true;的条件是遇非空格) { notSpace=false; //第一个空格仍然要复制 *p++=*q++; } else //如遇第二个或更后的空格,正是由于遇到第一个空格并复制后,notSpace=false;的原因,会走到这儿 { q++; //不复制 } } *p='\0'; } int main() { ifstream sourceFile; ofstream targetFile; char str[100]; int num_char=0, num_line=0; int i; sourceFile.open("list.txt<span style="font-family: Arial, Helvetica, sans-serif;">", ios::in); </span> if(!sourceFile) //测试是否成功打开 { cerr<<"input file open error!"<<endl; exit(1); } targetFile.open("nospace.txt", ios::out); if(!targetFile) //测试是否成功打开 { cerr<<"output file open error!"<<endl; exit(1); } while (!sourceFile.eof()) //一篇文章由多行构成 { sourceFile.getline(str,100,'\n'); alltrim(str); //删去多余空格 //保存删去空格后的字符 i=0; while(*(str+i)!='\0') { targetFile.put(*(str+i)); ++i; } targetFile.put('\n'); } sourceFile.close(); targetFile.close(); cout<<"处理完毕,请查看文件。"<<endl; return 0; }
时间: 2024-10-03 23:06:52