1. 程式人生 > >如何匯出百度網盤詳細目錄結構-超詳細的

如何匯出百度網盤詳細目錄結構-超詳細的

百度網盤大家都在用,有時候希望把自己的檔案目錄結構給匯出來,能形成一個檔案樹的形式,無奈網上找了好多資料都無果,大多數說的是在瀏覽器裡控制檯下,那個方法已經不適用,而且只能匯出一級目錄,求人不如求己,無奈之下決定自己動手豐衣足食,下面小編手把手教你怎麼把百度雲網盤裡的檔案目錄機構給匯出來。

首先,你要有百度雲管家客戶端(注意是PC版的哦),開啟其程式所在目錄。

右鍵點選百度雲客戶端快捷方式---選擇“開啟檔案位置(XP不適用)”,或點屬性,檢視快捷方式目標,一般在“C:\Users\Administrator\AppData\Roaming\baidu\BaiduYunGuanjia\”位置,開啟後可以看到有個user目錄,雙擊開啟,如下圖所示。

裡面有幾個資料夾,分別存放各使用者檔案資料。

開啟那個一長串的資料夾,可以看到裡面有個“BaiduYunCacheFileV0.db”檔案,每個人可能檔名不一樣,但是字尾肯定是.db檔案,然後是大小最大的那個檔案,這個就是存放你網盤的詳細資訊的資料庫了,如下圖所示。

如何開啟這個資料庫呢?

這需要一個軟體,Navicat Premium。這裡就不提供下載地址了,自己百度去吧,百度的時候在關鍵字後面加一個綠色免安裝,下載的雙擊就可以用,不用安裝了。

開啟Navicat Premium,點連線>選擇SQLite>常規>現有資料庫檔案>瀏覽並選擇你的百度雲客戶端目錄中“BaiduYunCacheFileV0.db”檔案,點“連線測試”,如顯示“連線成功”,點選確定回到主介面,如下圖所示。

雙擊剛才建立的那個百度雲管家資料庫,出現main,再雙擊main,點開表,雙擊cache_file表,如下圖所示:

這裡就是你的百度網盤上的所有目錄結構資訊,其中parent_path是路徑,server_filename是檔名。接下來就是匯出這些資訊到檔案裡,匯出的時候可以選擇全部匯出也可以選擇匯出自己需要的部分,怎麼匯出自己需要的部分呢,比如我只需要“教程”資料夾下的內容,看下面的截圖:

這樣一來出現的都是自己需要的資料了,接下來點選匯出按鈕,你可以選擇全部匯出,也可以選擇匯出部分。

開啟匯出的檔案:

接下來就是怎麼把這些資訊生成檔案樹的形式了,下面介紹兩種方法:

(方法1)利用PHP程式把xls檔案讀取生成目錄資料夾,然後再利用windows命令生成目錄結構。

PHP程式碼如下:

[php] view plain copy  print?
  1. <?php  
  2. header("Content-type: text/html; charset=utf-8");  
  3. require_once'phpexcel.php';  
  4. require_once'PHPExcel\IOFactory.php';  
  5. require_once'PHPExcel\Reader\Excel2007.php';  
  6. $uploadfile='data.xlsx';//這是剛才生成的xls檔案,我改了下名字,你改不改無所謂,對應上就行
  7. $uploadfile='android_path.xls';  
  8. $objReader= \PHPExcel_IOFactory::createReader('Excel5');/*Excel5 for 2003 excel2007 for 2007*/
  9. $objPHPExcel$objReader->load($uploadfile); //Excel 路徑
  10. $sheet$objPHPExcel->getSheet(0);  
  11. $highestRow$sheet->getHighestRow(); // 取得總行數
  12. $highestColumn$sheet->getHighestColumn(); // 取得總列數
  13. $objWorksheet$objPHPExcel->getActiveSheet();  
  14. $highestRow$objWorksheet->getHighestRow(); // 取得總行數
  15. $highestColumn$objWorksheet->getHighestColumn();  
  16. $highestColumnIndex= \PHPExcel_Cell::columnIndexFromString($highestColumn);//總列數
  17. $dataarray();  
  18. for($row= 2;$row<= $highestRow;$row++) {  
  19. $strs=array();  
  20. //注意highestColumnIndex的列數索引從0開始
  21. for($col= 0;$col$highestColumnIndex;$col++) {  
  22. if($col== 0){  
  23. $strs['parent_path'] =$objWorksheet->getCellByColumnAndRow($col$row)->getValue();  
  24. }else{  
  25. $strs['filename'] =$objWorksheet->getCellByColumnAndRow($col$row)->getValue();  
  26. }  
  27. }  
  28. $data[$row] = $strs;  
  29. }  
  30. foreach($dataas$k=> $v){  
  31. $parent_path= iconv("utf-8","gbk",trim(trim($v['parent_path'],"/")));  
  32. $filename= iconv("utf-8","gbk",trim(trim($v['filename'],"/")));  
  33. if(!is_dir($parent_path)){  
  34. mkdir($parent_path,0777,true);  
  35. }  
  36. $handlefopen("$parent_path/$filename""w");  
  37. fwrite($handle"明禮馨德");  
  38. fclose($handle);  
  39. }  
  40. ?>  


執行完這個程式後,找到已經建好的資料夾,開啟命令列,如下圖所示:

然後再命令視窗輸入tree /f > mulu.txt ,回車後你會發現多了個mulu.txt檔案,開啟看看:

看到沒,檔案目錄樹已經生成啦,下面來看第二種方法。

(方法2)利用Excel表格的vba巨集命令來實現(預設下沒有這個巨集,需要自己下載安裝)

如果你對VBA有所瞭解,那就選擇這個方法吧,如果不瞭解的話建議還是選擇上一個,下面看程式碼:

[plain] view plain copy  print?
  1. For i = 2 To 37204’資料行數  
  2. k = Val(Sheet1.Cells(i, 18))  
  3. For z = 0 To k  
  4. Sheet1.Cells(i, 21 + z) = "│"  
  5. Next  
  6. If Sheet1.Cells(i, 13) <> Sheet1.Cells(i - 1, 13) Then  
  7. strCell = Split(Sheet1.Cells(i, 13), "/")  
  8. If UBound(strCell) >= 1 Then Sheet1.Cells(i, 21 + k) = "├" & strCell(UBound(strCell) - 1) Else Sheet1.Cells(i, 21 + k) = "├" & Sheet1.Cells(i, 13)  
  9. ' If UBound(strCell) >= 1 Then Sheet1.Cells(i, 21 + k) = strCell(UBound(strCell) - 1) Else Sheet1.Cells(i, 21 + k) = Sheet1.Cells(i, 13)  
  10. 'Worksheets("Sheet1").Range(Cells(i, 21 + k), Cells(i, 21 + k)).Font.FontStyle = "Bold"  
  11. ‘如果是資料夾則設定成紅色顯示  
  12. Worksheets("Sheet1").Range(Cells(i, 21 + k), Cells(i, 21 + k)).Font.ColorIndex = 3  
  13. Worksheets("Sheet1").Range(Cells(i, 21 + k), Cells(i, 21 + k)).Select  
  14. Selection.Columns.AutoFit  
  15. End If  
  16. If Sheet1.Cells(i, 7) = 0 Then  
  17. Sheet1.Cells(i, 21 + k + 1) = "├" & Sheet1.Cells(i, 3)  
  18. If Val(Sheet1.Cells(i, 4)) >= 1048576 Then’檔案大小,小於1M的以K表示  
  19. Sheet1.Cells(i, 20) = Format(CStr(Val(Sheet1.Cells(i, 4) / 1024 / 1024)), "######0.##")& "M"  
  20. Else  
  21. Sheet1.Cells(i, 20) = Format(CStr(Val(Sheet1.Cells(i, 4) / 1024)), "######0.##") & "K"  
  22. End If  
  23. 'Sheet1.Cells(i, 21 + k + 1) = Sheet1.Cells(i, 3)  
  24. Else  
  25. 'Sheet1.Cells(i, 21 + k + 1) = Sheet1.Cells(i, 3)  
  26. 'Worksheets("Sheet1").Range(Cells(i, 21 + k + 1), Cells(i, 21 + k + 1)).Font.ColorIndex = 5  
  27. End If  
  28. Next  


生成目錄樹後複製到詞本里是這個樣子的:

以上是兩種方法,供大家參考。