用QT完成簡易批量檔名修改程式

2021-08-17 22:20:42 字數 3590 閱讀 7766

剛做了乙個用qt開發的玩具程式,寫篇筆記記錄一下;有乙個問題是這樣的:有乙份excel表,裡面存著一大堆的專利號和其對應的專利名稱,資料量不大,大概一千個;然後有乙個資料夾,裡面有一堆pdf,jpg,tif型別的檔案,這些檔案是專利書的影印件,但是名字比較亂,現在需要將名字的格式統一為excel的格式,也就是序號+專利號+專利名稱,問題的情況如下圖:

根據這個玩具程式,稍微了解了一下qt建立檔案,讀取檔案和檔名,修改檔名,開啟檔案和資料夾等操作

一、文字檔案的讀取

首先新增標頭檔案,這裡的qfile有qt對檔案操作的介面

#include
在標頭檔案的mainwindow類內開兩個函式和四個陣列

class mainwindow : public qmainwindow

;

接下來在mainwindow.cpp中實現txt檔案讀取的函式:

void mainwindow::readtxtfile(qstring url)

的作用是檢驗是否成功開啟該檔案,順帶設定檔案的開啟方式為唯讀

3、

line = file.readline();

rowfile[linecount] = line;

的作用是讀取一行的資料,並將資料傳輸給rowfile陣列

4、

rowfile[linecount] = rowfile[linecount].trimmed();
的作用是去除字串兩端的空白符(空格\t,tab,回車\n)

5、

code[linecount] = rowfile[linecount].mid(0,3);
mid的作用是擷取從第0個字元開始,長度為3的字元,並將擷取的字元賦值給code[linecount]

這時,我們只要把excel檔案的前三列資料複製到txt檔案中,就可以分別將序號,專利號,專利名稱存放在三個對應的陣列中了

出現的問題:

實際讀取txt檔案的時候,檔案內部有數字,有字母,有漢字,由於qt不知道將中文以何種方式顯示出來,會出現亂碼;

解決方法:

設定文字編碼型別

首先新增標頭檔案:

#include

在函式中加入**:

qtextcodec

*codec

=qtextcodec::codecforname("gbk");

將 

rowfile[linecount] = line;
改為:

qstring

str=

codec->tounicode(line);

rowfile[linecount]=

str;

二、讀取檔案的路徑及檔名

void

mainwindow::changename(qstring

url)

dir.setfilter(qdir::files);

//設定dir的過濾模式,表示只遍歷本資料夾內的檔案

qfileinfolist

filelist

=dir.entryinfolist();

//獲取本資料夾內所有檔案的資訊

intfilecount

=filelist.count();

//獲取本資料夾內的檔案個數

qdebug()<

<

for(int

i=0;i

//遍歷每個檔案

/*獲取檔案字尾名*/

}
}
基本思路是:

1、先根據路徑找到有關資料夾:

qdir

dir(url);

if(dir.exists())

//判斷資料夾是否存在

2、獲取資料夾內檔案的個數:

int

filecount

=filelist.count();

//獲取本資料夾內的檔案個數

3、for迴圈遍歷每乙個檔案,獲取檔案路徑和資訊

for(int

i=0;i

我用的是qtdesigner建立,以上為槽函式

至此,基本的邏輯就實現了

批量修改檔名

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

批量修改檔名

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

批量修改檔名

ren命令可用於修改檔案的名稱,包括字尾名。比如,將d盤中的1.jpg重新命名為2.png,只需在命令提示符中輸入下面的命令,然後回車即可。注意,如果提示許可權不足,那麼你需要以管理員身份執行命令提示符。如果要批量修改字尾名,可借助萬用字元來實現。比如將d盤中的所有檔案字尾名改為jpg的命令為 re...