c 實現批量修改檔名及檔案的歸檔移動

2021-10-07 10:34:39 字數 2899 閱讀 2641

最近接到乙個小任務,需要對150人的文件進行分類彙總,每個人有兩個檔案。最終需要將每個人的兩個檔案新建乙個資料夾進行單獨存放。就嘗試用c++**批量處理了一波,記錄如下:

一、問題分析:

1、由於每個檔案是每個學生提交,因此最終的文件呈現各種不規範的命名方式。

2、有的學生存在學號寫錯的情況。

二、解決想法及流程:

1、批量修改檔名,統一化命名方式;

2、程式自動檢查同乙個人的兩個檔名中的學號是否一致,丟擲資訊,手動核查;

3、自動新建個人資料夾,並將個人的兩個檔案移動到該檔案下;

4、反向校驗,將歸檔的個人資訊列印,並在excel中與資訊彙總表進行差錯比較;

三、**部分

1、批量修改檔名:

#include

#include

#include

#include

using

namespace std;

void

getfiles

(const std::string & path, std::vector

& files)

else

}while

(_findnext

(hfile,

&fileinfo)==0

);_findclose

(hfile);}

}int

main()

else

if(file[i]

<0)

studentname = file.

substr

(begin, num);}

else

if(file[i]

=='.'

)break

;else i++;}

string newpath = path +

"\\l+"

+ studetnum +

" "+ studentname +

".pdf"

; string oldname = path +

"\\"

+ file;

int result =

rename

(oldname.

c_str()

, newpath.

c_str()

);if(

!(result ==0)

) cout <<

"***failed file name***"

<< oldname << endl;

//cout << oldname << " ==> " << newpath << endl;

}return0;

}

2、資訊核對及檔案移動

#include

#include

#include

#include

#include

using

namespace std;

void

getfiles

(const std::string & path, std::vector

& files)

else

}while

(_findnext

(hfile,

&fileinfo)==0

);_findclose

(hfile);}

}string getsubname

(string& s)

intmain()

string prefix = basepath +

"\\"

+ subname1;if(

_access

(prefix.

c_str()

,0)==

-1)//如果資料夾不存在

_mkdir

(prefix.

c_str()

);//則建立

string oldname1 = path1 +

"\\"

+ filenames1[i]

; string newname1 = basepath +

"\\"

+ subname1 +

"\\"

+ filenames1[i]

; string oldname2 = path2 +

"\\"

+ filenames2[i]

; string newname2 = basepath +

"\\"

+ subname2 +

"\\"

+ filenames2[i]

;int result1 =

rename

(oldname1.

c_str()

, newname1.

c_str()

);int result2 =

rename

(oldname2.

c_str()

, newname2.

c_str()

);if(result1!=

0|| result2 !=0)

cout <<

"***failed file name***"

<< oldname1 << endl;

}return0;

}

3、excel的反向檢測

可能用到的幾個方法:

1、單個資料表的拆分:

2、核對兩列資料是否存在差異:

檔名 EXCEL批量修改檔名

場景一 面臨問題 將圖紙匯出為pdf格式時,因首字母按拼音排序,導致圖紙順序錯亂,需要在檔名前插入編號,以使檔案按照理想狀態排序。如下圖,預設的 按名稱排序 狀態為 節點 立面 平面 而理想的狀態為 平面 立面 節點 解決辦法 儲存,關閉文字文件。將字尾名 txt 修改為 bat 雙擊執行 提取檔名...

批量修改檔名

10.1整理女兒 的時候,發現從老婆手機拍出來的 檔名不帶拍照日期的,這樣有個問題,就是那麼積累了2年的 無法顯眼的知道是什麼時候拍的,而且在轉移 的時候,容易把修改日期更改掉,這樣就會丟失拍照的日期,對後續回憶 的時候就不知道當時女兒多大。如果手工修改,那麼幾千張 修改工作量實在太大,以修改一張 ...

批量修改檔名

批量修改檔案字尾 include include include includeint main else char newname 1024 fgets oldname,1024,fp int length strlen oldname 把讀到字串最後的回車 換成 0 表示字串的結束標示 oldn...