2018年3月6日 星期二

Win10 如何使用 cmd指令 自動連接區網印表機

Win10 如何使用 cmd指令 自動連接區網印表機

找了好多資訊通通都錯了,大部分都是之前 xp 連接方式 win10 有一些指令不能用,最後終於被我翻到了。
話說 rundll32 printui.dll,PrintUIEntry 的說明怎麼這麼難懂 QuQ
下面是寫好的批次檔可直接用
@Echo Off
Title AddPath - By:Charlotte.HonG
:: Date :2017/11/29
:: Final :2018/03/06
::===========================================================
::確認是否為管理員權限
call :IsAdmin
::===========================================================
::設置資訊
set priIp="192.168.2.1"
set showName="Lab - dcp7040"
set infFullName="%~dp0BRPRMA7A.INF"
set infItem="Brother DCP-7040 Printer"

rem 印表機伺服器新增方法
:: 建立 ltp1 連接埠
set prnport="C:\Windows\System32\Printing_Admin_Scripts\zh-TW\prnport.vbs"
cscript %prnport% -a -r PortXX -h %priIp% -o raw -n 9100
:: 連接印表機並從inf安裝驅動
rundll32 printui.dll,PrintUIEntry /if /b%showName% /f%infFullName% /rPortXX /m%infItem%

rem 網路芳鄰分享的只能用這樣
:: 安裝裝驅動到 windows
rem pnputil -a %infFullName%
:: 呼叫新增網路印表機精靈
rem rundll32 printui.dll,PrintUIEntry /in /n\\%priIp%\dcp7040
::===========================================================
Exit

:IsAdmin
@Echo Off
Reg.exe query "HKU\S-1-5-19\Environment"
If Not %ERRORLEVEL% EQU 0 (
  Cls
  Echo [權限不足] 需使用管理員權限開啟
  Pause & Exit
)
goto:eof

參數說明

大致有以下幾個參數要改
set priIp=”192.168.2.1”
這個只是那台印表機的IP應該不是大問題,先確認手動連接可以連上就對了
set showName=”Lab - dcp7040”
這個是出現在電腦上的名稱,可自訂取一個好識別的
set infFullName=”%~dp0BRPRMA7A.INF”
這個要去驅動裡面挖,可以從”從磁碟片安裝”來測試哪一個,選對了就有東西可以安裝了
set infItem=”Brother DCP-7040 Printer”
上面從磁碟片安裝之後的選單看到的名稱就是了,也可以從 inf 裡面看到

指令說明

prnport

使用方法: prnport [-adlgt?] [-r port][-s server][-u user name][-w password]
[-o raw|lpr][-h host address][-q queue][-n number]
[-me | -md ][-i SNMP index][-y community][-2e | -2d]
引數:
-a - 新增連接埠
-d - 刪除指定的連接埠
-g - 取得 TCP 連接埠的組態設定
-h - 裝置的 IP 位址
-i - SNMP 索引,如果啟用了 SNMP
-l - 列出所有 TCP 連接埠
-m - SNMP 類型。[e] 啟用,[d] 停用
-n - 連接埠號碼,套用到 TCP RAW 連接埠
-o - 連接埠類型,raw 或 lpr
-q - 佇列名稱,只套用到 TCP LPR 連接埠
-r - 連接埠名稱
-s - 伺服器名稱
-t - 設定 TCP 連接埠的組態設定
-u - 使用者名稱
-w - 密碼
-y - 群體名稱,如果啟用了 SNMP
-2 - 雙重多工緩衝,套用到 TCP LPR 連接埠。[e] 表示啟用,[d] 表示停用
-? - 顯示命令使用方法
範例:
prnport -l -s server
prnport -d -s server -r IP_1.2.3.4
prnport -a -s server -r IP_1.2.3.4 -h 1.2.3.4 -o raw -n 9100
prnport -t -s server -r IP_1.2.3.4 -me -y public -i 1 -n 9100
prnport -g -s server -r IP_1.2.3.4
prnport -a -r IP_1.2.3.4 -h 1.2.3.4

rundll32 printui.dll,PrintUIEntry

使用方式: rundll32 printui.dll,PrintUIEntry [options] [@commandfile]
/a[file] 二進位檔案名稱
/b[name] 基本印表機名稱
/c[name] 如果動作發生在遠端電腦,則是電腦的 UNC 名稱
/dl 刪除本機印表機
/dn 刪除網路印表機連線
/dd 刪除印表機驅動程式
/e 顯示列印喜好設定
/f[file] 可以是 inf 檔案或輸出檔案
/F[file] INF 檔案的位置,以 /f 指定的 INF 檔案可能與其有相依關係
/ga 增加每台電腦的印表機連線 (使用者登入時,連線將傳播)
/ge 列舉每台電腦的印表機連線
/gd 刪除每台電腦的印表機連線 (使用者登入時,連線將刪除)
/h[arch] 下列其中一種驅動程式架構: x86、x64 或 Itanium
/ia 使用 inf 檔來安裝印表機驅動程式
/id 用新增印表機驅動程式精靈來新增印表機驅動程式
/if 使用 inf 檔來安裝印表機
/ii 啟動新增印表機精靈及 inf 檔來安裝印表機
/il 使用新增印表機精靈來安裝印表機
/im 使用新增印表機精靈安裝印表機,並跳過網路列出的印表機
/in 新增網路印表機連線
/ip 使用網路印表機安裝精靈安裝印表機
/j[provider] 列印提供者名稱
/k 列印測試頁到指定的印表機,安裝印表機時,不可和命令相結合
/l[path] 印表機驅動程式來源路徑
/m[model] 印表機驅動程式型號名稱
/n[name] 印表機名稱
/o 顯示印表機佇列檢視
/p 顯示印表機內容
/q 安靜模式,不顯示錯誤訊息
/r[port] 連接埠名稱
/s 顯示伺服器內容
/Ss 將印表機設定儲存到檔案
/Sr 從檔案還原印表機設定
儲存或還原必須放在命令結尾的印表機設定選項旗標:
2 PRINTER_INFO_2
7 PRINTER_INFO_7
c 色彩設定檔
d PrinterData
s 安全性描述元
g 全域 DevMode
m 最小設定
u 使用者 DevMode
r 解決名稱衝突
f 強制名稱
p 解析連接埠
i 驅動程式名稱衝突
/u 使用現有的印表機驅動程式 (若已安裝)
/t[#] 起始頁面 (以零為基礎的索引)
/v[version] 下列驅動程式版本之一,”類型 2 - 核心模式” 或 “類型 3 - 使用者模式”
/w 如果在 inf 檔內找不到指定的驅動程式,提示使用者提供驅動程式
/y 設定為預設的印表機
/Xg 取得印表機設定
/Xs 設定印表機設定
/z 不要自動共用此印表機
/Y 不要自動產生印表機名稱
/K 將 /h 代表的項目變更為接受 2、3、4 (分別為 x86、x64 或 Itanium),及 /v 代表的項目變更為接受 3 (“ 類型 3 - 使用者模式” )
/Z 共用此印表機,只能和 /if 選項配合使用
/? 說明此訊息
@[file] 命令列引數檔案
/Mw[message] 在認可命令之前先顯示警告訊息
/Mq[message] 在認可命令之前先顯示確認訊息
/W[flags] 指定精靈 (如 APW 和 APDW) 的旗標與切換參數
r 讓精靈可以從上一頁重新開始
/G[flags] 指定全域旗標與切換參數
w 抑制安裝驅動程式警告使用者介面出現 (極安靜模式)
/R 強制使用選取的驅動程式來取代現有的驅動程式

參考

2018年3月5日 星期一

Windows10 如何啟用 壓縮系統 compactos 霍夫曼壓縮

Windows10 如何啟用 壓縮系統 compactos 霍夫曼壓縮

在影響效能不大的情況下壓縮系統空間
建議啟用 (實際上利用官方光碟安裝預設也是啟用的)
實測壓縮前容量約 27.1G 壓縮後是 25.7
下面指令等你順利用那顆硬碟開機再輸入。
如果電腦太舊,建議就不要壓了可能會影響效能比較多。
// 查詢系統檔案 CompactOS 狀態
compact /compactos:query

// 開啟 CompactOS
compact /compactos:always

// 關閉 CompactOS
compact /compactos:never

2018年3月4日 星期日

資料錯誤 (循環冗餘檢查) 成功複製的方法 [硬碟出現 05 C5 C6]

資料錯誤 (循環冗餘檢查) 成功複製的方法 [硬碟出現 05 C5 C6]

關於那些錯誤是什麼意思可以參考這篇:一次弄懂 硬碟 C5 C6 05 警告意思,如何修復

檔案壞了怎麼複製出來

因為 C6 檔案中有一小段壞了,如果是圖片或影片其實就算壞一點也不會怎麼樣,只是使用檔案管理員遇到錯誤就停下來了。
下載 DiskGenius 這有免費版的可以使用

開啟軟體,上面頁簽選擇瀏覽檔案,對著你要的檔案按右鍵複製

第一次會失敗沒關係取消他

這裡也是按完成

然後重新載入再來重複複製一次就可以複製出檔案了
應該有受損,但至少影片照片還能看

一次弄懂 硬碟 C4 C5 C6 05 警告意思 及 如何修復

一次弄懂 硬碟 C4 C5 C6 05 警告意思 及 如何修復

C5 是什麼

資料損毀=未知、壞軌=未知
C5 就是掃到某個磁軌有問題標記起來,但是還沒有做檢查不知道到底是好是壞,有可能是複製中斷電導致檔案壞了磁頭還沒寫好,這種狀態重寫一次就好了 C5 自動消失。
一直沒有讀寫到就不會有什麼事情C5就一直在。

C5 的解決方法 [05]

資料損毀=不一定、壞軌=已壞
如果對著C5標記的地方做讀取,讀不到東西完全死透了,可能會自動修復使用備用磁軌,這時候05會增加C5減少。
如果還讀的到還沒死透,只是反應時間很長也可以判定是壞軌了,這時候資料還活著,但是也快死了;這時候可能會自動使用備用軌道,也可能是使用者自行使用修復軟體將反應太慢的老化磁軌淘汰使用備用磁軌,C5 修復 05 增加。
如果只是有少數 05 而且已經使用好一段時間不再增加,那這顆硬碟還是正常的,但別用在資料敏感的地方,如果未過保建議直接送修(不要放到最後一天…資料安全重要);05的增加可能是即將全盤崩壞的徵兆。

C6 是什麼

資料損毀=已壞、壞軌=不一定
如果檔案不是讀不到而是讀出來數據是錯的,”可能會”增加 C6 與 C5。
這裡要牽扯到檢查碼 CRC 中文是 循環冗餘檢查,就是每一份檔案結尾會有一部分用來檢查對不對。
做個簡單假設(這只是簡化後的比喻不是實際狀況)
一個檔案是 “110011” 然後我們檢查碼假設是計算有幾個1,就是4個轉成二進制是100,我們就把它變成 “110011, 100” 這樣,然後我們對複製好的新檔案重新算有幾個1,跟後面三碼做比對就知道有沒有錯了。
當被標記C6的磁軌,有檔案落在上面且檔案被檢查CRC結果為正確,取消這個標記C6消失。
如果你只有”完整格式化(填充0)+掃描壞軌”只會消除C5,並沒有做驗證不會消除C6。
C6 並不是安全的,如果數值太高就要小心了,那一堆可能要變成壞軌了。

以上有任何一個有數值05/C5/C6,建議就直接送修了,一般都是直接更換不會囉嗦;不要放到保固最後一天,返返修的新品\良品也是有可能會壞的,正常使用個一年才能比較確定這顆穩了。


如何正確的讀取數值
如以下硬碟這棵05的數值來看
很常見的聽到的說法就是這顆硬碟壞了4軌,備用軌有5軌,超過就是有資料損毀的。不是這樣讀取的這完全是錯誤的讀法,(難過的這似乎是主流共識? XD)
實際上該RAW僅是一個數值用來表示了左邊三格的狀態也就是同時代表了三格,如何讀取的每一格以及每一家廠商都不一樣,這裡隨意舉了一個類比意思來說明。
看一下總共有12個位數,三個欄位就差不多切4個4個一組,第一個就代表現在值,第二個就代表最差值,最後一個則是閥值。
所以如果是 0009, 0004, 0005 的意思分別就是,目前值9,曾經最差有到4,如果超過5這顆硬碟就該換掉了。
絕對不是直接讀值,照這個數字排法直接讀會超級大吧,應該要去看該格的數值如何讀取,不過使用時間09倒是直接讀就好了,因為只有一格。
以這顆硬碟來說現在值還有100,就代表實際上損壞的軌才就那麼一丁點連1%都不到的意思(這是因為我知道他原本好的時候就是100),損壞到5的時候也就是備份磁軌用了95%,這時候會跳紅燈。你可以去觀察那些紅燈的硬碟的05通常會是 [1, 1, X] 這類的數字(X看廠商設置的跳紅燈閥值多少)。
這顆變成這樣還繼續運行有一年多了,沒有再出現壞軌基本上可以判定完全就是好的硬碟了,不過二手市場沒價了XD。少數壞軌是正常的實際上沒有任何一新顆硬碟是沒壞軌的,出廠的時候會格式化屏蔽壞軌。
壞軌的出現有可能過沒多久馬上變紅燈,所以如果是重要資料千萬不要賭,趕快備份然後送修吧。這顆是已經給時間驗證過了(還是跑系統碟1年),可以拿來當第三份資料備份還很ok。
另外選日文有個大好處是它~會~講~話!我第一次聽到的時候也嚇一跳XD
戳她的話也會講話,可以戳戳看(點擊)
打開的時候有問題就馬上跟你說哪邊出事了,印象中聽過的有
  • 硬碟健康狀態有點危險,記得備份 (黃燈的硬碟接上時都會說)
  • C5值好像增加了,趕快去看一下
  • 溫度好像有點高,拜託你趕快做點什麼吧


如何修復總結

消除 C5

  1. 完整格式化(整顆填0),可以消除所有 C5 ,這時候可能會有一部分跑到 05
    有一些磁碟有 C4 用來計數共發生過幾次異常事件
    [C4 總是隨著 C5 增加,但不會減少]
如果完整格式化沒消除C5,表示你該送修了XD

消除 C6

被標記有問題磁軌重新檢查CRC正確,即可消除。
如果這個錯誤是因為斷電造成資料寫壞的,可以直接把硬碟塞滿資料之後會自動消除
實測過 Win10 複製資料直接寫滿整顆硬碟有效
實際上我也有遇到沒辦法歸零的,這可能就真的有壞軌了~

現存資料

已存在資料的硬碟,可以檢查整顆的硬碟的 CRC,會跑很久很久很久建議晚上放著跑
這裡要注意如果數值太高千萬不要,這種整顆硬碟存取如果檔案太散對硬碟的負擔很大(磁頭不斷來回),如果硬碟要壞了這樣給他跑整顆穩死的。
chkdsk d: /r
或者當下載碟把她下滿,使用 jdownloader 下載這個軟體預設載完會自動檢查CRC。
如果下滿之後有檔案壞了複製不出來,可以嘗試砍掉那個檔案,重塞一個差不多大(覆蓋原來的磁軌),在複製一次,就可以看是載壞了還是壞軌。
如果是不穩定(過段時間 C5 C6 會在+回來),這種狀態大概掃描也掃不到壞軌,就趕快送修吧XD
至於落在C6上的壞檔案是沒辦法輕易複製出來的,可以參考這篇站內文複製出來
關於 C6 無法消除
後來我有遇到一種狀況是從邏輯壞軌的A硬碟複製出檔案到B硬碟,導致B硬碟出現C6,我確定是每次複製到有問題的檔案C6才增加;我有試著重寫一次檔案並沒有消除,與上次重寫後消除有不一樣的結果。
嘗試過掃描整顆硬碟也沒有壞軌,看起來並不是硬碟正好壞了。

2022-06-28 補充更新C6的問題:
C5指的是由韌體判斷這個磁軌有問題標記起來,而其中就涵蓋了C6,也就是說當C6出現的時候C5一定會跟著標記這塊有問題。
但是C5是可以修復的,他針對的只不過是單一一個磁軌能寫能讀就會判正常了,而C6是判斷到底這個數值跟當初寫進入的是否一致。
如果當初寫0,但是讀的時候反應很快一次就讀出數值1,那麼這種情況下會移除C5的標記,C5不會管你寫錯只管你有沒有正確讀出數值。
到底怎麼判斷當初寫什麼呢,就把它當作句子要靠前後文。床前明光,相信你一眼看過去就發現有問題對吧,現在你會懷疑他原本應該是吧?
在硬碟靠的就是一個叫做CRC驗證碼的東西來知道這串數據到底有沒有錯的,CRC發現錯了韌體會讓磁頭重讀的,就如同看到「床前明光」你可能會讓對方再說一次確認到底有沒有錯。
如果重讀了好幾次還是一樣錯,那就只好把這裡標C5+C6了。這有可能是單純是邏輯壞軌影響的,就是那時候可能電壓不穩或你踢到硬碟抖一下資料給寫錯了。
麻煩的是單純完整格式化硬碟只會消除C5,想要消除C6必須得在那個標記位的至上寫一份檔案上去,然後重新校驗一次對了才會消除。
這很麻煩首先不知道標記的位置,只能整顆硬碟寫滿然後整顆讀取一次。例如把100G寫入然後再把這100G搬出來,讀取的時候就會驗證CRC了。
如果是使用TeraCopy的複製軟體,複製進去之後有一個校驗選項,可以省下把資料COPY出來的麻煩。
想消除可以找人借一下D曹的小姊姊們,用TeraCopy複製滿並校驗過就可以消除了。前提是硬碟沒壞只是斷電造成,如果還是寫錯會繼續保持標記C6。
不過邏輯壞軌比較難造成C6,通常是就那個磁軌真有問題每次都寫錯。體現出來的結果就是你用小姊姊們把C6消掉了過了一陣子又冒出來。
為什麼C6不會跑到05是因為,韌體不會把錯誤的數值備份到備用詞區。如果是C5多讀幾次總是有機會讀出來的,校正通過那一瞬間才會把正確的數值備份到備用磁軌並標記05。

C6會比C5還要糟糕,C5讀不出來就算了很大概率是老化或當機,但是現在是1和0居然給寫錯了。邏輯壞軌指的是本來應寫1,但是卻不知道為啥寫一半給寫了0.6,導致讀取的時候韌體在那邊猜猜看到底是0還1,花點時間仔細看或多猜幾次就能猜中了,猜得太辛苦韌體自動備份結果到別的地方去。再怎麼樣也不至於變成0.1導致怎麼讀都是0,這根本就沒辦法猜了數據已經遺失,會報錯無法複製的。


消除 05

這個就不能消除了,只是統計用過幾次轉換到備份磁軌。
如果備份磁軌用完了還是會繼續統計一直暴增。
我有一顆磁碟只有壞開頭大概前3G的地方整片紅,但是後面掃描都正常多低於 100ms
就是說這顆磁碟把前面的地方切開不要用就還是都正常,但是注意他已經不具備安全保存資料的能力的,哪天突然全壞是不可預測的,而且使用上反應時間會慢很多。


注意事項

硬碟的報告 SMART 數值僅是針對,有發生問題的時候做紀錄,不代表硬碟實際健康度。
下面是一些沒辦法統計的狀況
  • 磁頭歪了不斷刮傷碟盤
  • 馬達罷工不想轉了
  • 軸承歪了磁頭刮到碟盤
  • 自行拆裝跑灰塵進去刮傷碟盤
沒辦法統計的情況,除了很雖直接掉磁頭或是馬達停轉(但這也是好事很大程度保證資料可以救回),通常會有一些徵兆
  • 讀寫變慢
  • 突然斷線我的電腦裡看不見重開會好
  • 有奇怪撞擊聲音或噪音


救援費用

  • 上面說的好事,修費約 $17000 (救回9成沒問題,沒括花且能救大概幾周吧)
  • 如果你無視那些症狀導致最後刮花了,約 $34000 (能救多少全看運氣,且維修時間可能1年起跳,慢慢 copy 資料…很慢很慢)
上面報價是台灣評價比較好成功率高的公司,可以找到更便宜的(但是…)
價錢也要依照實際狀況公司報價上面只是參考。
一般多數都有救援結果不滿意免費的方案,沒有的建議你換家。
一些比較簡單的狀況
  • 症狀發作中,部分檔案讀不出來
  • 你把它格式化了
  • 分區被刪除
大概$3000~$7000左右,不過除了[1]壞軌資料不好讀之外
(這給人家弄你可能比較省事也比較不會犯錯導致更慘)
其他上網爬一下軟體能救回來拉~推薦一個軟體 DiskGenius。


參考

如果本篇資訊有誤,希望可以留言告知我~

R9 280X 安裝 2018 驅動 進桌面過一段時間後當機

R9 280X 安裝 2018 驅動 進桌面過一段時間後當機

貌似只能安裝到 [2017.11] [2017.12] 我沒嘗試,之前就有經驗安裝 [2018.1] 出問題,那時候就不管了直接退回就版本繼續用,所以用了 18.1 的公用程式 + 17.11 的驅動。
一直跑到最近都沒問題,直接有一次當機,我再用虛擬機不知道顯示卡怎麼了驅動當掉!真是噩夢的開始,然後就一直無限重複下面狀態
  1. 重開到桌面先是沒驅動狀態
  2. 自動安裝驅動,裝好過1分鐘後畫面停住(手動重開)
  3. 重開有驅動但是開好過1分鐘後畫面停住(手動重開)
  4. 再次重開這次好了!
嗯很好,重點是下次重新啟動又會回到 [1],真是有夠莫名其妙的。

解決過程

後來就想說安裝最新版 18.2 驅動試試看,結果也是沒好QuQ
開始排除原因,我用了 dism++ 刪除所有舊版驅動
意外發現好用,還有原來AMD解除安裝並不會刪除驅動,驅動會被複製一份到 windows 內封存,也因此你在裝置管理員按更新的時候會看到各個日期的版本。
結果刪除之後更慘,本來多開幾次會好現在都不會好了QQ
我才忽然想起之前裝新版的就有問題,退回去舊版的,好拉之後原因就好解決了,因為一直當機只要重開3次就會跳安全模式選單了,這時候選進去安全模式(含網路)
跑去下載 17.11 版本下載回來安裝,不過在安全模式下移除 AMD好像跑不完怪怪的我等很久,就算了重啟。
替代方案是直接到裝置管理員,直接對著顯示卡按右鍵移除然後,按住SIFT在按重啟(這樣才會出現安全模式選單),我想讓他載入微軟的基本驅動,然後再用這個狀態去安裝。
重啟後一樣再裝置管理員對著顯卡,按從磁片安裝驅動,選中 17.11 解壓縮到 C曹的位置的資料夾裡面有驅動,然後安裝驅動。
之所以要用從磁片安裝是因為我現在是降板 18.2 -> 17.11 你如果按給我選擇資料夾,下場就是告訴你目前驅動已經最近不能安裝。
然後重啟進桌面,這次進來還是 18.2 又當機了,WTF剛剛的從裝置管理員按刪除驅動根本就沒刪除封存的驅動!
想當然,會重複剛剛 [1~4] ,然後我就在開 dism++ 把18.2 刪除,然後到新增移除程式刪除AMD公用程式,再來不重開機直接重新安裝 AMD[17.2] 驅動安裝包。
好了~做完就一切都正常了!感動QuQ

問題分析

只要當機過 Windwos 一律都是選用最新版驅動

這是我第一次當機後的問題,導致他一直選用我很久以前安裝過的 18.1 版本
重點是當下我根本就已經忘記這回事了QuQ

如果選用最新版驅動又當機,則再選下一個版本

這是導致我 [1~4] 重開好幾次的原因

注意事項

  • 移除AMD驅動並不會刪除已經封存在 Win內的驅動
  • 如果頻繁更新建議定期刪除驅動,記得至少保留1個穩定版本 or 最舊版
  • 出問題直接在安全模式下用 dism++ 砍掉問題驅動,才不會重啟後又被選中

其他問題

本來以為都好了,結果誰知道關機之後又變成無驅動狀態!WTF 剛剛都只是按重開機
後來我想到有過一次當機是我其中一個螢幕直接不見,變回單螢幕,我就嘗試把另一個螢幕拔掉,使用單螢幕完整關機+開機,居然就正常了。
正常之後再把他差回去(在這中間我有到電源選項打開快速啟動),就都正常了,可以關機了,真的是很搞事QQ
多加一項注意事項:驅動”出事 or 第一次安裝”的時候的時候最好先用單螢幕測試。
搞不好 18.2 是可以用的…只是我也懶得測試了QQ 想到再升級

意外解決的問題

  1. 原本我D曹的裡面圖標每次關掉資料夾再重新開啟,縮圖就會重跑,實在是很奇怪QuQ,沒想到今天弄完就好了,不知道哪邊影響到。
  2. 原本打開快速啟動我關機都會卡住,卡著1~3分鐘才關閉,這個也好了直接關閉!
問題[1]就完全沒想法了,也是最近才發生的,問題[2]倒是很有可能,快速起動也需要顯示卡支持(雖然好像不需要驅動是卡要支持),快速啟動導致關機卡太久可以嘗試乾淨移除顯示卡驅動試試看。

2018.4

解決方法有效,但後來還是有發生問題~
關連到驅動或是有當機過後,還是會出狀況,主要遇到的狀況是看影片硬解之後當機,還有用mpc看快轉時間軸會延遲+瞬間快轉,但是用pot就很正常。
後來重灌後還是這樣一度以為卡壞了,才發現是 k-lite 新版有問題,降板回去就快轉時間軸正常,不過有少數影片觀看還是會當機(桌面花屏)。
這個我就真的沒想法了,乖乖用pot播放…
雖然可以解決不過當機後看到桌面跳回來就覺得心理癢癢的,我就乾脆重灌+把SSD安全抹除了,SSD讀取從550M掉到剩100M有夠慘的,這顆原始分數有1200分地說XDD

2018年3月2日 星期五

OpenCV 如何編譯 contrib -- 懶人包批次檔

OpenCV 如何編譯 contrib 指令快速編譯批次檔

寫成批次檔可以自動下載,版本變動的時候自行更改即可~


開源

製作過程並沒有什麼技術含量,主要是還是debug時間最多,一堆沒想到的奇爬問題一直出現,把它寫出來給我自己看方便之後維護文章,有興趣的話也可以看看是怎麼實現全自動編譯的。
我的實現目的是只要輸入版本號,就可以自動在windwos上編譯完成。
版本號對應的方式如下
rem 設置 OpenCV 版本
set cv_version=4.0.1

rem 下載Opencv
git clone -b %cv_version% https://github.com/opencv/opencv
git clone -b %cv_version% https://github.com/opencv/opencv_contrib
首先條件要先達成安裝最新版的 cmake 跟 git,尤其是cmake的這個必須跟著opencv升級,否則編譯過程會出錯,升級的話麻煩的,最後我是放棄了搞些什麼辦法了,直接附在安裝包一起省事。
下載的網址個別是:
值得注意的是,有些人的電腦上已經安裝過了,解決辦法是下載攜帶版,直接開攜帶版的exe而不直接在命令內使用 git 或 cmke。
對應的辦法像這樣
rem 設置 git 與 cmake 位置 (如已安裝環境變數可略過)
set gitPath=Git\bin
set cmakePath=cmake\bin

%~dp0%gitPath%\git
%~dp0%cmakePath%\cmake
再來就是讓cmake自動產生make檔案,語法跟linux差不多,長這個樣子
rem 設置 cmake 參數
set build_dir=build_contrib
set source_dir=opencv
set modules_dir=opencv_contrib\modules
md %build_dir%
cd %build_dir%

rem 建立 cmake 檔案
%~dp0%cmakePath%\cmake -G %mode% -DOPENCV_EXTRA_MODULES_PATH="%~dp0%modules_dir%" "%~dp0%source_dir%"
最後打開 Visutal Studio 來編譯吧~其實這裡有語法,只是沒查到不知道去哪裡找QuQ就算惹,剩最後一部只是按右鍵編譯。
有人知道怎麼操作指令的話~還請留言教一下XD
具體操作是先按 ctrl+shift+b 編譯,編譯完畢之後檔案其實就已經有了。
要輸出到同一個資料夾可以按,左邊 CMakeTargets -> INSTALL 右鍵 然後 按 J 在案B,自動幫你把全部整理到名為 INSTALL 的資料夾。
然後要上面編譯要做兩次,一次是 debug 模式一次是 release 模式,從VS上方選單切換。

批次檔內容

cmake OpenCV contrib_v3.bat
rem @echo off
Title dismInstall By Charlotte.HonG

rem 設置 OpenCV 版本
set cv_version=4.0.1
rem 適用的VS版本[可以用 cmake -G 看到其他選擇]
set mode="Visual Studio 15 2017 Win64"

rem 設置 git 與 cmake 位置 (如已安裝環境變數可略過)
set gitPath=Git\bin
set cmakePath=cmake\bin
path=%path%;%~dp0%gitPath%;%~dp0%cmakePath%

rem 下載Opencv
%~dp0%gitPath%\git clone -b %cv_version% https://github.com/opencv/opencv
%~dp0%gitPath%\git clone -b %cv_version% https://github.com/opencv/opencv_contrib

rem 設置 cmake 參數
set build_dir=build_contrib
set source_dir=opencv
set modules_dir=opencv_contrib\modules
md %build_dir%
cd %build_dir%

rem 建立 cmake 檔案
%~dp0%cmakePath%\cmake -G %mode% -DOPENCV_EXTRA_MODULES_PATH="%~dp0%modules_dir%" "%~dp0%source_dir%"

rem  打開 VS
start "" "OpenCV.sln"
CreateList.bat
::@Echo Off
Title CreatList - By:Charlotte.HonG

set FILENAME1="DebugLib_Lists.txt"
set FILENAME2="ReleaseLib_Lists.txt"

set LIBPATH=%~dp0build_contrib\install\x64\vc15\lib
set LISTPATH=%~dp0build_contrib\install\x64\vc15\bin
set INCTPATH=%~dp0build_contrib\install\include\opencv2

::Lib清單
cd %LIBPATH%
dir *d.lib /b /on> %~dp0%FILENAME1%
dir *401.lib /b /on> %~dp0%FILENAME2%

::路徑清單
echo %INCTPATH%> %~dp0%PathList.txt
echo %LIBPATH%>> %~dp0%PathList.txt

exit