遍歷所有磁碟根目錄及次級目錄,查詢目標資料夾
需求:
在InsertStr()函式中,解析Task.rec檔案,讀出時間資訊,然後通過插入排序,把該路徑插入strlist(lstTask)的正確位置。為了進行比較排序,使用了一個新的strlist(lstTime)來儲存時間。
宣告:
bool_t GetLastestTasks(strlist &tasks); bool_t FindTask(strlist &task, ::wstring path); bool_t InsertStr(strlist &task, ::wstring str);
實現:
bool_t XMLTaskInfoMgr_6C::GetLastestTasks(strlist &tasks) { DWORD drivs = GetLogicalDrives(); int c = 0x00000001; WCHAR m = _T('A'); tasks.RemoveAll(); for(int i=1; i<=16; i++) { int ct = drivs & c; if(ct) { CString root; root.Format(_T("%c:\\"), m); unsigned int type = GetDriveType(root); if(type == DRIVE_FIXED || type == DRIVE_REMOVABLE) { FindTask(tasks, root.GetBuffer()); } } c = c<<1; m++; } return true; } bool_t XMLTaskInfoMgr_6C::FindTask(strlist &task, ::wstring path) { CString base = path; CString tmp = base + _T("*.*"); WIN32_FIND_DATA fd; HANDLE hFind = FindFirstFile(tmp, &fd); do { if(fd.cFileName[0] != '.') { if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { CString tmp2(fd.cFileName); CString base2 = base + tmp2; tmp2 = base + tmp2 + _T("\\*.*"); WIN32_FIND_DATA fd2; HANDLE hFind2 = FindFirstFile(tmp2, &fd2); do { if(fd2.cFileName[0] != '.') { if(fd2.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { CString tmp3(fd2.cFileName); CString base3 = base2 + _T("\\") + tmp3; tmp3 = base2 + _T("\\") + tmp3 + _T("\\Task.rec"); File f; if(f.Open(tmp3, false)) { f.Close(); InsertStr(task, base3.GetBuffer()); } } else { if(StrCmpW(fd2.cFileName, _T("Task.rec")) == 0) { /*CString str(fd2.cFileName); str = base2 + _T("\\") + str;*/ InsertStr(task, base2.GetBuffer()); } } } } while (FindNextFileW(hFind2, &fd2)); } } } while (FindNextFileW(hFind, &fd)); return true; } bool_t XMLTaskInfoMgr_6C::InsertStr(strlist &task, ::wstring str) { CString pa(str); pa = pa + _T("\\Task.rec"); attrset as; as.SetAt(TaskInfoMgr_6C::FILE_PATH, pa); TaskInfoMgr_6C *tbsm = CreateTaskInfoMgr_6C(_T("xml")); tbsm->StartUp(as); datatable tdtb; tbsm->GetTaskInfo(tdtb); int32_t nc = tdtb.GetColCount(); datacol dc = tdtb.GetColumns(); CString text; int32_t index; for(int i=0; i<nc; i++) { text = dc.operator[](i); if(text == _T("taskTime")) { index = dc.operator[](text.GetBuffer()); break; } } pos_t pos = tdtb.GetHeadRow(); datarow dr = tdtb.GetNextRow(pos); LPWSTR buf = new wchar_t[50]; memset(buf, 0, sizeof(wchar_t)*50); dr.GetAt(index, buf); CString sbuf(buf); int hn = (int)lstTask.GetCount(); if(hn == 0) { lstTask.AddTail((CString)str); lstTime.AddTail(sbuf); } else { POSITION pz = lstTime.GetHeadPosition(); POSITION pt = lstTask.GetHeadPosition(); while(pz) { POSITION cp_pz, cp_pt; cp_pz = pz; cp_pt = pt; CString cmp = lstTime.GetNext(pz); CString kkk = lstTask.GetNext(pt); if(sbuf > cmp) { lstTask.InsertBefore(cp_pt, (CString)str); lstTime.InsertBefore(cp_pz, sbuf); if(hn >= 10) { lstTask.RemoveTail(); } break; } } } task.RemoveAll(); POSITION ss = lstTask.GetHeadPosition(); while(ss) { CString ans = lstTask.GetNext(ss); task.AddTail(ans); } delete buf; return true; }
相關推薦
遍歷所有磁碟根目錄及次級目錄,查詢目標資料夾
需求: 目標資料夾: 包含Task.rec檔案。 假定: 目標資料夾只存放在磁碟根目錄及次級目錄下。 引數: strlist &tasks —— 儲存
遍歷當前目錄,提取指定資料夾內容並拷貝到指定位置
1、該指令碼為bat指令碼,在Windows下執行 2、指令碼遍歷當前目錄,包含子目錄,找到名稱為“應用程式”的資料夾 3、抽取資料夾的內容,包含子目錄,拷貝到“C:\GSPCloud_Beta管理\最新合併\應用程式” 4、詳細引數可以參考xcopy用法說明 @echo off &am
利用遞迴簡單實現遍歷所有資料夾子目錄
1.列出指定目錄下滿足指定條件的檔案的清單,包括子目錄(當前的工程目錄) import java.io.File; public class FileTest { public static void main(String[] args) { File file
遍歷所有子物體中renderer(渲染器)中的material(材質)並改變其alpha值實現若隱若現的效果
sys [] object c engine orm 器) gpo gin nts using UnityEngine;using System.Collections;using UnityEngine.UI; public class CubeControl : Mo
python遍歷所有盤符下的圖片並拷貝下來
path 腳本 div import ict Coding color 不同類 getc 最近在學習python,閑著無聊就試著寫啦這個小的腳本,雖然有很多不足,但是還是收獲不少。 該腳本的功能: ①遍歷本地計算機中的所有盤符,並將名稱記錄下來; ②循環遍歷盤符下的所有圖片
C# 遍歷所有的子控件和孫控件,包括容器中的,並批量操作和調用
cnblogs ati tex foreach pri int 遍歷 asc 語句 這裏要用兩個知識,一個是遞歸,一個是隊列。 //定義一個Control類型的隊列allCtrls private static Queue <Control> allCtrls
python使用discover方法遍歷所有要執行的用例
開始 over 所有 discover 文件名 ret .get 通過 getcwd 當我們寫了一個單個py的測試文件時直接運行就ok了,但當我們有很多很多個這樣的py 時,難道要一個一個的點擊來運行嗎,當然不是。我們可以通過discover方法來找到所有的 用例。 下面直
文件夾遍歷所有文件
body 指定 col out oid void 文件 rect 實例 1 // 該方法遍歷指定目錄下的所有文件 2 public static void listAllFiles(String mypath) { 3 // 實例化F
unity深度查找某個子物體和遍歷所有子物體方法
new cal ons foreach 是我 destroy 目標 call void 本文總結一下關於unity的查找子物體的方法 首先說明一下這裏將講三種查找子物體方法: 查找固定路徑的某一個子物體的方法、通過名字深度查找某個子物體的方法、查找父物體下所有子物體的方
Redis遍歷所有key的兩個命令 -- KEYS 和 SCAN
() redis 一個 mat 能夠 href data 能說 Language 當我們需要遍歷Redis所有key或者指定模式的key時,首先想到的是KEYS命令: KEYS pattern 官網對於KEYS命令有一個提示: KEYS 的
16、遍歷所有關鍵字的api方式
之前的一些講述中,我們介紹了查詢索引的功能,但一般都是通過域和關鍵字進行的查詢,那如果我們不知道域或想要查詢出所有的關鍵字怎麼辦呢,下面我就給出兩個解決方案,程式碼很簡單 通過指定域方式獲取該域中所有的關鍵字 //遍歷指定域中的所有關鍵字的方式 @Test public void sea
FindWindowEx 遍歷所有視窗
FindWindowEx 唯一麻煩是第2個引數的指定 . Explore 下視窗是Z序的 , 實際上就是根據 第一個引數 和 第2個引數 來找 第2個引數後的一個視窗: HWND child = 0; child = FindWindowEx
shell-遍歷所有txt,並且獲取txt指定的內容
[[email protected] ~]$ cat get_manager_ip.sh #!/bin/bash# Filename: get_manager_ip.sh# Description: 指令碼包括兩個功能:# 1,獲取各個產品的manager的ip# 2,check各個產
遍歷所有排列可能的類,比如列出“a”,"b","c"所有排列的可能
使用方法 Tree tree = new Tree(); tree.addChild("1"); tree.addChild("2"); tree.addChild("3"); tree.addChild("4"); ArrayList<A
android遍歷所有子檢視
import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent
SQL Server遍歷所有表統計行數
DECLARE CountTableRecords CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.schema_id) FROM sys.tables sst WHERE sst.TYPE
mysql 遍歷所有的庫並根據表和sql語句備份
建庫、使用者語句 create database test_hb; create user ' test_hb'@'%' identified by '123456'; grant all privileges on test_hb.* to ' test_hb'@'%'; grant a
Python求最長迴文字串(三重迴圈遍歷所有字串 新)
前兩天自己寫了下,雖然對了,但是思路不太好,網上看了遍歷的思路,瞬間感覺之前好蠢,雖然本質上我的程式碼也是遍歷,但是思路不好。 正確思路就是先遍歷出所有長度大於等於2的字串,然後在逐一判斷這些字串是不是迴文字串就行了,思路清晰了,程式碼就簡單多了,10分鐘就寫完了。 d
二叉樹的先序遍歷(遞迴和非遞迴)、中序遍歷(遞迴和非遞迴)、後序遍歷(非遞迴)及層次遍歷java實現
二叉樹的先序遍歷,遞迴實現: public List<Integer> preorderTraversal(TreeNode root) { //用棧來實現 List<Integer> list = new ArrayList&l
hdu 1599 find the mincost route 無向圖的最小環 求從一個點遍歷所有節點以後回到原點的最短
在寫題解之前給自己打一下廣告哈~。。抱歉了,希望大家多多支援我在CSDN的視訊課程,地址如下:http://edu.csdn.net/course/detail/209題目:find the mincost routeTime Limit: 1000/2000 MS (Java