2017/05/05

2017信用卡繳房屋稅 優惠整理「免手續費、紅利積點、分期」(106年度)

5月報稅大月,包括免徵房屋稅的房屋現值、及高級房屋新課稅方式等2項細部修正,民眾可多加留意。信義代書指出,今年的房屋稅課徵,有2大變動,一是房屋現值在10.1萬~10.8萬元者,可免徵房屋稅。信義房屋代書林以德表示,過去僅侷限10萬元以下免稅,但今年放寬免徵門檻後,估計部分老舊房屋或是小套房等小坪數產品,可享受免稅優惠,各縣市受惠戶數在數百至數千戶,而每戶每年自今年起可省下稅金約1200多元。

林以德說:「符合新免徵規定的房屋,稅捐處將主動辦理免徵,並通知屋主,民眾不用擔心。」
此外,今年7月起台北市將適用新房屋標準價格,若是2014年7月後完工住宅負擔將可減輕,但2001年7月1日後完工的高級住宅,則將增加稅額負擔,但其稅負變化,將反映於明年的房屋稅單。(詹宜軒/台北報導)

延伸閱讀 ► 2017信用卡繳稅&所得稅報稅優惠「免手續費、紅利積點、分期」(106年度)

 

《中國信託》LINE Pay卡

●免手續費
●LINE Pay卡綁定LINE Pay帳號繳納房屋稅,享LINE Points 1%點數回饋無上限
●活動期間:即日起至106年5月31日止
●優惠資訊連結
●LINE Pay卡介紹

《玉山銀行》信用卡(分期需登錄)

●刷玉山卡繳稅,免手續費
●3期、6期0利率:5月不限金額,新增1筆一般消費,享3或6期0利率
●抽獎活動:刷卡繳稅,每一筆享一次抽獎機會,RIMOWA行李箱(5名)、西堤餐券2張(50名)
●MaterCard加碼抽:富士拍立得1台(20名)
●活動期間:即日起至106年6月2日止
●優惠資訊連結

  

《第一銀行》信用卡(分期需登錄)

●一次付清免收手續費
●3、6期0利率:單筆綜所稅/房屋稅款,滿3000元,可分3、6期0利率
●活動期間:106年5月1日止至106年6月2日止
●公司卡、由你分期卡、Visa金融卡、悠遊debit卡,不適用本活動
●優惠資訊連結

 

《台新銀行》全家刷台新信用卡( 需登錄 )

●免手續費
●5/1-5/31單月累積刷滿8,000送50元刷卡金,限量登錄15,000名(5/15開放登錄)
●4期0利率:單筆刷2,000,可申請4期0利率
●活動期間:106年4月26日止至106年6月2日止
●優惠資訊連結

 

《新光銀行》信用卡(分期需線上或專人申辦)

●免手續費
●4期0利率:單筆滿3000元,享4期0利率
●抽獎活動:抽墾丁華泰瑞苑住宿憑證(5名)
●活動期間:106年4月26日止至106年6月2日止
●優惠資訊連結

 

《大眾銀行》信用卡(分期需網銀申請)

●不限金額,免手續費
●3期0利率:於5月新增一般消費不限金額,享3期0利率
●活動期間:106年5月1日止至106年6月5日止
●優惠資訊連結

  

《聯邦銀行》信用卡(分期需登錄)

●免手續費:不限稅額免手續費
●3期0利率:單筆稅額滿3,000元,可分3期0利率
●活動期間:106年5月1日止至106年6月2日止
●優惠資訊連結
  

《陽信銀行》信用卡(分期需致電客服辦理)

●免手續費
●3期0利率:稅額單筆滿3,000元,可申請3期0利率
●活動期間:106年5月1日止至106年5月31日止
●優惠資訊連結

  

《永豐銀行》信用卡(分期需登錄)

●免手續費:代繳房屋稅免手續費
●3期0利率:單筆繳稅達10,000元以上,再享3期0利率
●100元百貨刷卡金:繳稅滿100,000元,送100元百貨刷卡金
●活動期間:106年5月1日止至106年6月2日止
●優惠資訊連結

  

《日盛銀行》信用卡(需登錄)

●免手續費
●稅後加油並登錄,106年5月至8月於全台加油站刷日盛卡,享3%回饋金(每月每戶上限100元)
●活動期間:106年4月26日止至106年6月2日止
●優惠資訊連結

 

《合作金庫》信用卡

●免手續費:世界卡/無限卡,免收手續費 /其他信用卡,繳納稅費之最近2個月,所有合庫卡一般消費1次,免收手續費
●分期0利率:無
●活動期間:106年5月1日止至106年5月31日止
●優惠資訊連結

  

《遠東商銀》信用卡

●免手續費:不限金額即享0手續費
●分期0利率:無
●紅利折抵:HAPPY GO 4點折抵1元,點數折抵無上限
●活動期間:106年5月1日止至106年5月31日止
●優惠資訊連結

 

2017/03/13

Windows利用批次檔(Batch)讀取指令執行的結果或文字檔案內容 for /f %i in ...

透過指令去了解「/f」到底有什麼魅力呢?

首先,括弧裡面可用三種模式:

for /f %i in (Test.txt) do echo %i ,
(檔案)
(“字串”)
(‘指令’)

因為預設是以空白(Space)或跳位(Tab)做切割,所以不是整行讀取。
for /f %i in (“This is a test.”) do echo %i

也會遇到一樣的問題。
for /f %i in (‘dir /b’) do echo %i

這樣就可以知道「/f」的魅力了吧?

以下用文字文件test.txt來解釋

在前面參數可以自訂以取得想要的結果,以下文字文件來解釋:

第一個「delims」:
for /f “delims=]” %i in (Test.txt) do echo %i
就是指定字元去分割字串,當然「]」不存在,所以整句會直接上去,預設是空白(Space)或跳位(Tab)。而下面這樣會比較好懂:

for /f “delims=a” %i in (Test.txt) do echo %i

二個字也行喔:
for /f “delims=ai” %i in (Test.txt) do echo %i


接下來是「skip」:

for /f “skip=1” %i in (Test.txt) do echo %i

就是第一行不要處理啦!

下一個是「eol」:
for /f “eol=$” %i in (Test.txt) do echo %i
就是前面有符號「$」不要處理啦!

下一個「tokens」比較複雜:
for /f “tokens=1,2,3” %i in (Test.txt) do echo %i %j %k
他是說,把字串以空白切出來,所以「This is a test.」會被切成「This」「is」「a」「test.」,而取其中第 1, 2, 3 段分別丟到 %i, %j, %k 中。這是「tokens」特殊用法,被切出來的會依序從原指令 in 前面的 %i 開始丟。

下面這樣也可以:
for /f “tokens=1,2,3” %i in (Test.txt) do echo %i %j %k
用連字號也沒有問題。

最後一個是沒有用過的「usebackq」:
for /f “usebackq” %i in (“Test.txt”) do echo %i
是指原本用來表示「(檔案)」改成「(“檔案”)」、「(“字串”)」改成「(‘字串’)」、「(‘指令’)」改成「(`指令`)」。應該是為了要避免跳脫字元的關係,但個人沒有過的原因那就直接用跳脫字元就好了啊!

補充一下:
for /f “eol=$ skip=1 tokens=1-4 delims=a” %i in (“Test.txt”) do echo %k
參數是可以混搭的,要注意「delims」有可能需要用空白,所以建議擺在最後一個,避免判斷錯誤。

其實到這邊就可以結束了,不過還是要提醒「/f」有很多方法可以用,如刪除每一槽下的「Autorun.inf」:
for /f %i in (‘mountvol ^| find “:\”‘) do del /s q %iAutorun.inf
就是一個很簡單的實例。

「for /f」實在是一個很實用的指令,但也是整個教學裡面最難學的。不過學完這個應該也會覺得還好,命令提示字元也不過爾爾,沒錯!的確沒有很難。下一章沒有新知識了,博君一笑罷了。

2017/03/10

微軟的Windows作業系統是怎麼裝驅動程式的呢? (How Windows Installs Devices)

(原文出處: 這裡)

  1. The New Device is Identified (第一步:識別設備,獲取設備標識(ID))
  2. A Driver for the Device is Selected (第二步:選擇最優驅動安裝包)
  3. The Driver for the Device is Installed (第三部:安裝驅動)

Step 1: The New Device is Identified

當一個設備插入到計算機總線後,總線驅動檢測到設備插入,然後給設備分配一串硬件ID(hardware identifier (ID))。
例如,插入一個USB Key插入到電腦後,分配的硬件ID為:

USB\VID_096E&PID_0807&REV_0100
USB\VID_096E&PID_0807

Windows就靠此ID來尋找最優的那個驅動安裝包。

硬件ID的格式如下:

  • A bus-specific prefix, such as PCI\ or USB\.
  • Vendor-specific identifiers for the device, such as a vendor, model, and revision identifier. The format of these identifiers within the hardware ID is also specific to the bus driver.

Hardware ID
A hardware ID is a vendor-defined identification string that Windows uses to match a device to an INF file. In most cases, a device has associated with it a list of hardware IDs. (However, there are exceptions ? see Identifiers for 1394 Devices ). When an enumerator reports a list of hardware IDs for a device, the hardware IDs should be listed in order of decreasing suitability.
通過MSND中的解釋可以了解到:硬件ID是一組ID值,如上面例子中的兩列字符串。

Device ID
A device ID is a string reported by a device’s enumerator. A device has only one device ID. A device ID has the same format as a hardware ID.
設備ID不是一組ID值,只有一個唯一ID值,他唯一標識了此類設備,設備ID和硬件ID的格式一樣,硬件ID中最能嚴格定義此類設備的ID值就為設備ID。如上面兩條ID值中,第一條能更加準確的定義此類設備,所以第一條也叫設備ID。

Compatible ID
A compatible ID is a vendor-defined identification string that Windows uses to match a device to an INF file. A device can have associated with it a list of compatible IDs. The compatible IDs should be listed in order of decreasing suitability. If Windows cannot locate an INF file that matches one of a device’s hardware IDs, it uses compatible IDs to locate an INF file. Compatible IDs have the same format as hardware IDs. However, compatible IDs are typically more generic than hardware IDs.

關於設備ID,硬件ID,兼容ID等概念,可以參考MSDN:http://msdn.microsoft.com/EN-US/library/windows/hardware/ff541224(v=vs.85).aspx,或者《竹林蹊徑:深入淺出Windows驅動開發》中的第十二章。這裡不需要深入了解。

在設備管理器中,可以瀏覽硬件ID:

可以看到,硬件ID不只一個,它是一組ID,其中,最嚴格定義了該類設備的ID也被稱作設備ID。如上圖中,第一個條USB\VID_096E&PID_0807&REV_100為設備ID。

Step 2: A Driver for the Device is Selected

第一步得到硬件IDs,Windows開始搜索驅動安裝包。這節解決幾個問題:

搜索的對比規則是什麼?
搜索順序是怎樣的?
搜索結果有多個驅動匹配,如何選擇最優?
搜索對比規則

每個驅動安裝包中,都有一個INF文件,此文件記錄了廠商定義的設備信息等內容。以某個廠商的智能卡私有驅動為例,其INF片段如下:

[Manufacturer]
%MFGNAME1%=DeviceListMfg1,NTamd64

[DeviceListMfg1.NTamd64]
%USB\VID_08E6&PID_3437.DeviceDesc% =DriverInstall64, USB\VID_08E6&PID_3437 ;
%USB\VID_08E6&PID_3438.DeviceDesc% =DriverInstall64, USB\VID_08E6&PID_3438 ;
%USB\VID_08E6&PID_3480.DeviceDesc% =DriverInstall64, USB\VID_08E6&PID_3480 ;
%USB\VID_08E6&PID_34EC.DeviceDesc% =DriverInstall64, USB\VID_08E6&PID_34EC ;

可以看到[DeviceListMfg1.NTamd64]中,定義了每個產品的VID,PID信息,諸如:USB\VID_08E6&PID_3437,就是廠商自己定義的硬件ID,Windows搜索INF這個區域,對比第一步得到的硬件IDs和INF中的硬件ID,如果能精確匹配,那說明此驅動包符合安裝條件。

我們接著分析微軟的通用智能卡驅動是如何實現的,我們知道,微軟不可能知道我們的設備的硬件ID信息,也就說,在INF中,不能將全世界廠商的硬件ID全部記錄在INF文件中。所以,微軟引入了兼容ID(compatible ID)。兼容ID和硬件ID的格式一樣,但它更加通用,能囊括一大類設備。它被廠商定義在INF文件中。如果Windows沒有找到對應的硬件ID,它會去比對INF中的兼容ID,找到對應的驅動安裝包。

以微軟XP的CCID驅動為例,usbccid.inf中的片段:

[Manufacturer]
%CCID%=CCID,NTamd64

[CCID.NTamd64]
%USBCCID.DeviceDesc% = USBCCID.Install,USB\Class_0B&SubClass_00

此處的USB\Class_0B&SubClass_00,就是兼容ID,在設備管理器中也能顯示兼容ID:

驅動包的搜索順序

Windows搜索INF文件的位置,是按照一定規則來執行的,不同的操作系統,搜索順序會有所不同:

Search phase

Windows Server 2003, Windows XP, and Windows 2000

Windows Vista and
Windows Server 2008

Windows 7 and later versions of Windows

Without user interaction

DevicePath

Driver store

Windows Update

Driver store

DevicePath

With user interaction

Prompt for distribution media

Windows Update

DevicePath

Windows Update

Prompt for distribution media

Not applicable

DevicePath對應的路徑存儲在註冊裡:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下,定義了DevicePath字符串鍵值。通常,對應的目錄為 Windows\inf。

Driver store在Vista以後,對應的路徑為:Windows\System32\DriverStore\FileRepository。 Vista以前的系統,路徑為:Windows\Driver Cache。從Vista以後的系統,系統開始重用Driver Store,如果找到一個匹配的驅動包,第一步就是先把這個安裝包拷貝到Driver Store中,然後安裝過程在Driver Store中進行。

下面舉例說明:

當前系統如果為Vista,當一個用戶插入一個智能卡到USB hub中時:

USB 總線驅動為智能卡創建一串硬件IDs,Windows首先會搜索Driver store(Windows\System32\DriverStore\FileRepository)中的INF文件。
如果未找到合適的驅動包,Windows啟動 添加新硬件嚮導,在嚮導裡,用戶可以選擇從Windows Update搜索(聯機搜索),也可以自己指定INF安裝路徑。

選擇聯機搜索,Windows搜索順序如下:

DevicePath(Windows\inf)
Windows Update
如果搜索不到,提示用戶插入光盤、軟盤,或者指定驅動包位置

如果驅動包找到,Windows將驅動包運輸(Staging)到Driver Store(Windows\System32\DriverStore\FileRepository)中。
當前系統如果為Win7,當一個用戶插入一個智能卡到USB hub中時:

USB 總線驅動為智能卡創建一串硬件ID,Windows首先會搜索Windows Update,如果找到,將驅動運輸到Driver store(Windows\System32\DriverStore\FileRepository)中。
如果未找到合適的驅動包,Windows繼續搜索Driver store(Windows\System32\DriverStore\FileRepository)和DevicePath(Windows\Inf).
如果找到了安裝,如果未找到,安裝失敗。
Win7不會自動運行安裝嚮導來讓用戶選擇驅動包,但這個嚮導仍然存在,在設備管理器中,選擇未識別的設備,右鍵,選擇更新驅動,同樣能夠達到安裝的目的。

選擇最優驅動包

搜索完成後,可能會有多個驅動包匹配成功,如不同版本號的驅動都匹配成功了。如何進一步篩選,選出最優驅動包?

如果Windows只找到一個驅動包,那好說,直接安裝。
如果Windows找到不只一個驅動包,Windows為每個驅動包的匹配度進行打分,打分最低的那個,就是最優的那個。
如何給驅動打分,有一套規則,規則比較複雜,打分在vista之前和vista之後會有所不同,有所不同,可以參考MSDN:http://msdn.microsoft.com/EN-US/library/ff686700(v=VS.85,d=hv.2).aspx

這里大致說明一下,影響分值有幾個因素:

驅動是如何被簽名(微軟簽名?第三方簽名?未簽名?等)
驅動ID是如何匹配的(根據硬件ID?根據兼容ID?等)
… …
如果打分最低的有多個(就是倒數並列第一的概念),Windows使用如下規則,進一步篩選:
是否已被簽名
通過INF的Version節中的DriverVer字段值判斷哪兒個版本最新,就選哪個。
下面摘自《竹林蹊徑:深入淺出Windows驅動開發》一個解釋片段:

Step 3: The Driver for the Device is Installed

選擇好了驅動,就開始安裝驅動了,安裝驅動的步驟如下:

通過INF文件中的CopyFiles指令,拷貝二進製文件(驅動和其他文件)到指定目錄
如果INF 中有DDInstall.Coinstallers段,註冊device-specific co-installer。 co-installer是一個DLL庫,是為了輔助設備驅動安裝的一個庫,它主要做一些在INF文件中無法描述的操作。例如,添加一些額外的信息到註冊表,讀取註冊表的一些關鍵信息用以執行不同的操作,安裝完成顯示完成頁面等。關於Co-installer更多的信息,可以參考MSDN:http://msdn.microsoft.com/EN-US/library/windows/hardware/ff554011(v=vs.85).aspx
讀取INF中的Class 和 ClassGuid字段,將設備進行歸類(軟件方式歸類,如將一個插入的鼠標歸類為Mouse,將所有的智能卡設備歸類為SmartCard)。如果此Class是一個系統中不存在的設備類型,廠商需要提供 類安裝庫(class installer),來安裝設備類。這也是一個DLL,而且類安裝過程中,也可以有class co-installers輔助安裝庫,具體信息參考MSDN:http://msdn.microsoft.com/EN-US/library/windows/hardware/ff554009(v =vs.85).aspx
當所有的驅動和co-installders都被註冊,Windows將控制權交給Plug and Play (PnP) manager,它負責加載和驅動設備。
PNP管理器首選調用驅動入口函數:DriverEntry,接著調用AddDevice,……,發送IRP_MN_START_DEVICE給驅動設備對象。驅動開始工作。

2017/02/16

Windows重覆開機reboot測試範例 - batch file

常常需要自動重新開機的測試, windows7 設定開機自動啟動某應用程式, 先建立將要啟動的程式捷徑。

如下面的run.bat , 將此捷徑複製到以下目錄位置。
C:\Users\使用者帳號\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
以後開機就會自動啟動這個程式了。

重覆開機測試範例 run.bat :

@echo off  不輸出指令start /wait C:\test1.bat 開新視窗去執行令一個batch檔, 且會等待他執行完ping 127.0.0.1 > nul 另類等待數秒的做法set rootpath=C:\Users\xxxxx\Desktop\test  設定環境變數set day=20120111set logfile=%rootpath%\%day%\log.txtfindstr /C:"A123456789" E:\result.xml 在檔案裡面搜尋關鍵字if %errorlevel%==1 goto Fail  若為1表示沒找到if %errorlevel%==0 goto pass  若為0表示有找到echo %time%: Fail >> %logfile% 若走到此表示其他錯誤cls  清螢幕color 8c 改字體顏色pause 暫停:passecho %time%: PASS >> %logfile%  輸出文字到log檔案goto end:Failclsecho %time%: NOT Found >> %logfile%echo.echo-----------------------------------echo		NOT Foundecho-----------------------------------echo.color 8cpause:endshutdown /r /t 1 在一秒後自動重開機

什麼是GPT什麼是MBR,NTFS又是什麼東西?

網路上很多人討論與解釋GPT、MBR、NTFS,不過總是長篇大論,以下有個簡易的了解方法,讓大家簡顯易懂:GPT、MBR、NTFS基本上都是存於電腦硬碟中的格式。我們將硬碟比喻成是一間圖書館。GPT與MBR就好比圖書館中的書架。

  • GPT可在大型圖書館中放很多書架(硬碟可支援到18ET〈1887萬TB〉,可分割128磁區)。
  • MBR只適合小型圖書館中擺放的書架(硬碟支援到2TB,最多可分個4個主要磁區)。
  • NTFS就好比書架上的書,供圖書館人員編排書籍使用,所以NTFS同時可存於GPT與MBR兩種格式中。

搞清楚GPT跟MBR的差別

硬碟愈來愈大,傳統電腦中的BIOS卻只能定位到2TB左右的容量,超過的空間就無法使用,這是因為BIOS所採用的磁碟分割方式為「MBR」

MBR(Master Boot Record)
只能定址約2TB左右的大小(2.2 × 1012位元組),而且也只支援最大4個主分割區,也就是如果你有一顆3TB以上的硬碟,一定無法只分割為一個分割區而能用完全部容量。

因此各家主機板廠商紛紛推出新一代的UEFI BIOS,如此才能解決硬碟的辨識問題,所以UEFI的出現不是光為了讓BIOS圖形化更容易使用,更是為了要支援「GPT」這個硬碟分割格式,它才能支援3TB以上的大容量硬碟喔!

GPT(GUID Partition Table)
從特性上看來,確實比MBR優秀不少,光是可以支援最大容量到18EB(約為1887萬TB),以及分割區最大可以到128個,就足夠打到MBR站不起來了。

從Windows Server 2003以後的微軟系統,都可以讀寫GPT分割區,蘋果電腦從OS X開始也都開始支援,不過除了少數Linux系統以外,幾乎都只支援從UEFI來啟動GPT,並不能從BIOS中開機,因此以微軟Windows來說,目前就分為BIOS+MBR以及UEFI+GPT兩種開機方式,撇除開機時的不同,在進入系統以後的操作方式及功能,都是完全相同的,最大不同只差在支援的硬碟大小跟數量。

我只知道我的硬碟是NTFS,這跟MBR或GPT有關係嗎?

又是MBR、GPT又是NTFS的,確實很讓人摸不著頭緒。如果把硬碟空間當作一座圖書館的話,分割區MBR及GPT是一個個書架,讓你可以放置書籍,不用把書全部堆在地上亂糟糟。而NTFS/FAT32等就是書架上的書的排列方式,所以我們可以稱MBR及GPT為「分割區」,而NTFS/FAT32等檔案格式就是「分割表」。

那這麼說來,不管硬碟多大,一律分割成GPT磁區不就好了,既是未來的趨勢,新的格式用起來爽度也夠,不過GPT也不是完全只有優點,雖然說在系統碟格式化成GPT並安裝Windows 7/8用起來根本不會有問題,不過如果你還要把這顆硬碟安裝到其他舊系統(如XP)的電腦,就很有可能會讀不到囉!

GPT會多分割出了好幾塊空間

還有GPT硬碟因為相容性的關係,明明你只是要分割一個主分割區,卻一次就多分出了好幾塊空間,看起來相當礙眼,為什麼會這樣呢?

GPT分割區因為是新格式,不免會與舊系統或硬體共用,但是舊版系統跟硬碟分區軟體有可能會不認得GPT啊!因此GPT分區在建立時也會順便建立一個性質為「Protective MBR」的分割區,以免無法辨識GPT分割區的軟體誤將檔案內容破壞。因此通常在使用Windows 8光碟安裝UEFI系統時,除了產生安裝系統的主分割區以外,還會有以下3個分割區:(這裡有分隔的圖)

  • 修復分割區(約300MB):這個分割區是微軟獨有,用來在需要修復系統的情況,供給Windows RE(Windows Recovery Environment)存取之用。
  • ESP分割區(約100MB):非必須存在,放置UEFI啟動檔案,在開機時UEFI BIOS會讀取這塊區域,檔案格式為FAT32。
  • MSR分割區(約128MB):必須存在,就是前面所說的Protective MBR,當這顆碟安裝到不支援GPT的系統或硬碟管理軟體時,由於它們只會讀取到此分割區,就不會破壞GPT主分割區中的檔案了。

由於以GPT方式分割硬碟實在是分太多區塊了,因此有的網友認為2TB以內的硬碟在安裝系統時只要用傳統的BIOS+MBR安裝即可。

而且用SSD來安裝系統已經漸漸成為趨勢,目前SSD的主流大小在128~256GB左右,更是不能任意浪費空間,即使GPT分割區實在是好處多多,但MBR也還尚未過氣,一般電腦使用仍綽綽有餘。

Boot Process 與命令列工具BCDEdit用於管理 BCD (開機設定資料)存放區

提到bcdedit, 大部分就是跟bios,多重開機,secure boot,winPE,…etc有點關係, 因為 bcdedit就是去編輯BCD資料的指令! 所謂的開機設定資料 (BCD) 檔案, 就是提供一個存放區, 可用於說明開機應用程式和開機應用程式設定。所以說 BCDEdit 為命令列工具, 可用於管理 BCD 存放區。它可用於各種不同的目的,包括建立新的存放區、修改現有的存放區、新增開機功能表選項等。BCDEdit 本質上可提供與舊版 Windows 上之 Bootcfg.exe 相同的目的,但有兩項重大改進:
BCDEdit 顯示比 Bootcfg.exe 範圍還要廣泛的開機選項。

開機管理程式設定

Windows 開機管理程式位於識別元 {bootmgr} 下的 device 與 path 設定,必須指向正確的磁碟分割與可執行檔。其他設定可以參考修改 BCD 存放區範本
在 Windows Vista 的 BCD 範本中,有如下的這些設定:

Windows 開機管理程式--------------------identifier              {bootmgr}device                  partition=C:path                    \EFI\Microsoft\Boot\bootmgfw.efidescription             Windows Boot Manager

在 Windows Server 2008 的 BCD 範本中,有如下的這些設定:

Windows 開機管理程式--------------------identifier              {bootmgr}device                  partition=\Device\HarddiskVolume1path                    \EFI\Microsoft\Boot\bootmgfw.efidescription             Windows Boot Manager

兩種模式(Legacy 32bits / UEFI 64bits )的 bcd檔:

  • Legacy 32bits
    • C:\boot\bcd
  • UEFI 64bits
    • C:\elf\microsoft\boot\bcd
  • 或是兩種皆支援的hybrid mode

(出處:Repair Windows BCD – Windows 10/8.1/7/Vista)
In Windows Vista, Windows 7, Windows 8/8.1 and Windows 10 the System Boot Configuration Data (BCD) is stored in a file in folder “\Boot”.

The full path to this file is “[active partition]\Boot\BCD“.
(On UEFI/GPT the full path is “[EFI system partition]\EFI\Microsoft\Boot\BCD“)

Windows NT6 (Vista, Windows 7/8/10) BIOS/MBR boot process depends on the presence of an active partition on hard disk.
(On UEFI/GPT boot process depends on the presence of EFI System Partition(ESP) on hard disk)

BIOS/MBR boot process from hard disk goes like this:

  1. BIOS firmware initialization and self test (Power On Self Test – POST)
  2. load and execution of MBR (Master Boot Record) on first disk
  3. load and execution of partition boot record (PBR) on active partition
  4. load and execution of boot manager (“\bootmgr”) from active partition and then display of boot menu (skipped if only one boot entry)
  5. load and execution of Windows NT6 loader – file “winload.exe” from \Windows\System32 folder
  6. load and execution of kernel and drivers

The active partition (also a primary partition) can be mapped to a drive letter like c:, d: or be the unmapped “System Reserved” partition. You can use Disk Management or diskpart.exe to view and set the active partition.

If BCD resides on an unmapped active partition the full path is “\Device\HarddiskVolumeN\Boot\BCD” where N is a number starting from 1. If active partition is mapped to c: drive then the full path to system BCD is “c:\Boot\BCD”.

UEFI/GPT boot process from hard disk goes like this:

  1. UEFI firmware initialization
  2. load and execution of first boot candidate (first entry in NVRAM boot order – usually Windows firmware boot manager(\EFI\Microsoft\Boot\bootmgfw.efi))
    – no master(MBR) and partition boot record(PBR) code used!
  3. display of Windows boot menu (skipped if only one boot entry)
    (it is not clear what’s the purpose of Windows boot manager (“\EFI\Microsoft\Boot\bootmgr.efi”) – should be investigated)
  4. load and execution of Windows NT6 loader – file “winload.efi” from “\Windows\System32” folder
  5. load and execution of kernel and drivers

And here a visualization of Windows UEFI boot process from an UEFI Plugfest – Windows boot environment by Murali Ravirala from Microsoft.

轉錄-Boot Process and BCDEdit

(出處)The new boot environment supports both BIOS and Unified Extended Firmware Interface (UEFI) firmware models. It uses a new data store for boot configuration data (the BCD store) that replaces Boot.ini and provides new boot applications that replace the previous Windows® loader (Ntldr.exe), including a new Windows boot manager and Windows boot loader.

What does the boot process do?
When a computer is turned on, it must perform a variety of tasks before it is ready to start running applications. To accomplish these tasks, the computer runs startup software that resides in the firmware. This software (a “boot loader”) locates and initializes the operating system kernel and prepares access to hardware devices before the operating system is ready to start running applications. The boot loader is typically independent of a specific operating system, but it can locate the code to start the next step, which is the operating system–specific phase of system startup. The boot loader and related boot configuration information is often stored in system files that are separate from the operating system, application programs, and user data.

Are there any special considerations?
You must have administrative rights to change the boot configuration for Windows. To change the boot configuration, start the boot configuration application BCDEdit.exe from a command prompt with administrative rights. Be aware that changing the boot configuration can make the system unable to start. To avoid problems with this, make a backup copy of the current boot configuration ahead of time by using the bcdedit /export save-bcd command.

Support for both BIOS and UEFI firmware
UEFI is the next generation of firmware architecture that is designed to replace the BIOS architecture. The new Windows boot environment is designed for both BIOS and UEFI and uses a common data store that can exchange boot configuration information between the firmware, the boot loader, and boot applications.

New boot applications
The functionality that was previously combined in Ntldr.exe is now separated into multiple applications:

  • Windows Boot Manager (Bootmgr.exe or Bootmgr.efi). This application is independent of the operating system and uses the firmware to load the Windows boot loader either from a particular disk partition or over a network connection (in the case of network boot).
  • Windows Boot Loader (Winload.exe or Winload.efi). This application is part of the operating system and loads a specific version of Windows. It uses the firmware to load the operating system kernel and to boot critical device drivers from a local hard disk.
  • Windows Resume (Winresume.exe or Winresume.efi). Windows Resume finds a hibernation image and then uses the firmware to read the hibernation file into RAM and to resume the operating system from the hibernation state.

The Windows boot environment also includes the Windows Memory Tester (Memdiag.exe or Memdiag.efi). You can start this diagnostic tool from the boot manager to verify that RAM is working correctly.

New data store that replaces Boot.ini
The Boot Configuration Data (BCD) store replaces the text-based Boot.ini file. In the BCD store, the Windows boot manager, the Windows boot loader, and other boot applications are represented as program objects (GUIDs) instead of text items. A new tool, BCDEdit.exe, enables you to use basic and extended commands to modify these objects in order to control all aspects of the boot process. Although the data store represents each object with a GUID, some objects have alias names for common use, such as {bootmgr} (which refers to boot manager) and {default} (which refers to the default Windows boot loader). Applications can modify boot configuration data by using a new BCD Windows Management Instrumentation (WMI) provider.

You can use the standard system application Msconfig.exe to provide a graphical interface for viewing and modifying a subset of the boot configuration settings. You must run Msconfig.exe with administrative rights.

 

轉錄-修改windows7啟動項的詳細步驟

(出處)發現win7下無法像XP下直接修改C:/boot.ini即可,需要在管理員權限下使用bcdedit命令操作。記錄如下:
Bcdedit簡介

  • 在NT60系列操作系統(Windows 7/Vista/2008)中的一個命令行工具,用於建立和重新配置bootloader,後者無須再使用boot.ini文件。
  • 也就是說,使用BCDEdit這個工具,能夠修改NT60 系列系統的啟動菜單在之前基於NT50系列(Windows XP/2000/2003)的Windows系統中,Windows使用Ntldr作為Boot Loader來啟動系統,但在新的NT60系列系統中,微軟引入瞭一種全新的boot loader架構,Windows Boot Manager (Bootmgr.exe)。
  • 與Ntldr嚴重地依賴於硬件不同的是,NT60中的新架構可以實現完整的硬件獨立性,且能夠與多種操作系統無縫結合,讓NT60的啟動/引導過程更加快速與安全。
  • 同時,將之前Windows 系統中由Boot.ini管理的內容移交給新的Boot Configuration Data (BCD : 啟動設置數據),當然,也提供瞭新的啟動選項編輯工具,BCDEdit (BCDEdit.exe),來管理啟動設置。
  • ——所謂boot loader,在指在內核運行之前執行的一段小程序,系統通過它來初始化硬件設備、建立內存空間的映射圖等,將系統的軟硬件環境設置成一個合適的狀態,為最終調用操作系統內核準備好正確的環境。
  • ——在啟動過程中,Ntldr 使用Boot.ini 文件來確定在啟動/引導過程中要顯示哪些操作系統選項,我們對啟動選項的設置可以通過修改boot.ini文件中相應內容實現。
  • Windows NT60 (Windows 7/Vista/2008)與早期NT52 系列系統(Windows XP/2000/2003)啟動的對比
    • 在傳統的基於BIOS的計算機中,如果只安裝NT60 系列操作系統(Windows 7/Vista/2008),您將會發現Boot.ini 文件已經徹底從系統中消失;如果系統中安裝瞭NT60 和之前的Windows 系統,如NT52 系列操作系統 (Windows XP/2000/2003),雖然仍可找到Boot.ini 文件,不過,這個文件只作用於那些系統,而不會對NT60 的啟動有任何影響。
    • 而在基於EFI (Extensible Firmware Interface : 可擴展固件接口,以後采用這種接口的PC會越來越多)的計算機中,Boot.ini 文件則更不復存在,在基於EFI的系統中,啟動選項被貯存在主板的存儲器中。此時要修改啟動選項,要麼通過能夠讀寫NVRAM的工具如NvrBoot,要麼使用上文提到的BCDEdit。
    • 由此可見,在NT60中,想要再像之前NT52 中那樣通過一個簡單的文本編輯器來修改Boot.ini(或用NT52自帶工具Bootcfg)的方式來管理啟動選項已經不可能瞭,要對啟動設置進行修改,只能使用命令格式相對要復雜得多的BCDEdit。
  • 此外,微軟也在NT60 中提供瞭可通過WMI (Windows Management Instrumentation : Windows管理規范)調用的BCD 類,通過它可以用編程的方式修改BCD數據。不過,相信對絕大多數根本不會接觸編程的用戶而言,這更是不可能的任務。

BCDEdit 使用前註意

  • 1.工具性質: command line tool
    • 需要註意的是,BCDEdit不是一個運行於圖形界面下的程序,而是一個命令行工具,該文件(Bcdedit.exe) 位於 “\Windows\System 32”目錄下。
  • 2.啟動
    • 要執行BCDEdit,首先應進入命令行窗口,並要將操作用戶並提升至管理員權限。另外,該工具依賴於參數,如果不帶參數,則不能正常使用。
    • 在命令行窗口中,轉到系統目錄如 “C:/windows/system32”下,然後輸入“bcdedit <參數>” 即可。也可直接在任意目錄運行,因為System32目錄本身在環境變量“Path”的范圍內。
  • 3.BCDEdit命令核心
    • (1)幫助
      • bcdedit /? : 顯示全部的命令幫助(都隻是概述)。
      • bcdedit.exe /? <命令> : 顯示指定命令參數的詳細信息(無需帶斜杠)。使用中對其他任何可用參數也均可使用本命令格式查看該參數的具體說明。
    • (2)Enum
      • 通過命令行工具Bcdedit,我們可以添加、刪除及修改BCD (Boot Configuration Data)中的對象。
      • 在BCD中,每個對象均具有唯一的GUID (Globally Unique Identifier : 全局唯一標識符),如系統中的每塊硬盤、每個分區的GUID (全局唯一標識符)均不相同。
      • 在BCD中,硬盤或分區的GUID可分為如下幾類:
        • {ntldr}: 指存在上代NT50系列操作系統(Windows XP/2000/2003)的硬盤或分區;
        • {default}: 默認所在硬盤或分區;
        • {current}: 當前硬盤或分區;
        • {}: 類似於這個格式的GUID指其他安裝瞭操作系統的硬盤或分區。
      • (註:相應的GUID可通過“bcdedit ”或“bcdedit /enum all ”命令查看。這樣會顯示BCD當前的啟動設置數據,包含瞭所有在BCD記錄中的操作系統,均能顯示其GUID,用戶可以此作更改啟動數據的參考。)
    • (3)保險措施(使用BCDEdit備份與恢復啟動選項)
      • 在對Windows NT60的啟動選項修改之前,最好先對其備份,以防萬一操作失誤或其他故障導致系統無法啟動。
        • bcdedit /export <目錄> : 將啟動設置備份到指定的目錄下;
        • bcdedit /import <目錄> : 恢復之前備份在指定目錄下啟動選項。
      • 註:當需要還原備份的啟動選項時,應仔細檢查備份的啟動選項是否對應於自己所需要的,否則重新設置會比較麻煩。

使用BCDEdit修改啟動菜單選項

  • 作為一種良好的操作習慣,在對Windows Vista的啟動選項進行任何修改前,首先要對BCD中的啟動選項進行備份,相應的命令上頁我們已介紹過,在此不再贅述;其次,使用“bcdedit ”或“bcdedit /enum all ”來查看系統中硬盤或分區的正確GUID 標識,並將其記錄下來。
  • 畢竟,BCDEdit只是一款命令行工具,我們操作時需手動輸入類似“”這樣的長字符串時,很容易出錯,而這往往會導致Windows Vista啟動失敗。
  • 下面詳細介紹使用BCDEdit修改啟動選項的常用命令格式:
    • bcdedit /set {ntldr} Description “Windows XP Professional SP2”: 修改上一代在啟動菜單中的顯示內容,比如說我們也可將其修改為“Vista天地de專用XP SP2”之類。註意,命令中的引號不可省略;操作系統
    • bcdedit /set {current} description “Windows Vista Build 5270 x86″: 修改當前啟動硬盤或分區上的操作系統在啟動菜單中的顯示內容。註意,當前分區上的操作系統可能為Windows Vista,也可以是其他系統,當然,命令中的引號也不可省略;
    • bcdedit /set {} description “Windows Vista Build 5270 x64”: 修改安裝於其他硬盤或分區的系統在啟動菜單中的顯示內容,使用這項命令時一定要註意該硬盤/分區的GUID輸入正確,相應的GUID可通過“bcdedit ”或“bcdedit /enum all ”命令查看。
    • bcdedit /default {current} :將當前啟動硬盤/分區中的操作系統設置為默認啟動的系統;
    • bcdedit /default {} :設置指定GUID上的操作系統為默認啟動的系統;
    • bcdedit /default {ntldr} :設置上一代Windows 系統Windows XP為默認啟動的系統;
    • bcdedit /displayorder : 設置啟用菜單中各項的顯示順序,如:
    • bcdedit.exe /displayorder {ntldr} {current} :將首先顯示Windows XP,然後再顯示默認啟動的系統如Windows Vista;
    • bcdedit /timeout 15 :將默認的啟動菜單顯示時間30秒更改為15秒,當然,您可以將這個時間修改為任何您希望的數值。
    • 使用BCDEdit修復硬盤/分區結構錯誤
      在對啟動選項的修改過程中,如添加或刪除某個硬盤/分區時,可能會因操作中的不慎導致硬盤/分區結構的混亂,除瞭采用恢復修改前的備份方法外,也可以首先使用BCDEdit來嘗試一下修復。具體方法如下:

X:\>X:\boot\fixntfs.exe -lh -all : 這時的“X: ”指引導目錄 “boot” 所在的硬盤/分區;
bcdedit /set device partition=X: : 將指定GUID的分區設為啟動分區。註意,這裡的“X: ”的GUID須與指定值不同,同時,搜狗電腦網,運行該命令後,必須接著運行下面的osdevice命令;
bcdedit /set osdevice partition=X: : 將指定GUID的分區設為啟動分區。註意,這個命令必須與上面的device命令配對使用,同時“X: ”的GUID須與指定值不同。

 

Bcdedit命令詳解,自定義Vista啟動管理項

Bcdedit 位於X:\Windows\system32\ “X:”為安裝Vista的盤符。

儲存操作指令
====================
/createstore 創建一個新的空白啟動配置數據文件。
bcdedit /createstore C:\Data\BCD 創建BCD啟動配置數據文件儲存到“C:\DATA\”文件夾。
/export 備份啟動配置數據文件。
bcdedit /export “C:\Data\BCD Backup” 備份BCD啟動配置文件到“C:\Data\”文件夾,並以“BCD Backup”命名。
/import 還原啟動配置數據文件。
bcdedit /import “C:\Data\BCD Backup” 從“C:\Data\”文件夾恢復BCD啟動配置文件。

儲存項目操作指令
====================
/copy 項目拷貝
操作系統啟動項目的拷貝:
bcdedit /copy /d “Copy of entry”
/create 新建項目
創建操作系統載入程序項目的NTLDR(Ntldr):
bcdedit /create /d “Earlier Windows OS Loader”
創建存儲器磁碟另外的選擇項項目:
bcdedit /create /d “Ramdisk options”
創建一個新的操作系統啟動項目:
bcdedit /create /d “Windows Vista” /application osloader
創建一個新的調試器:
bcdedit /create /d “Debugger Settings”
/delete 刪除項目
刪除指定的操作系統項目:
bcdedit /delete
刪除指定的操作系統項目但啟動時不顯示項目(徹底刪除):
bcdedit /delete /cleanup
刪除指定的操作系統項目但啟動時顯示項目:
bcdedit /delete /nocleanup
刪除操作系統載入程序項目的NTLDR:
bcdedit /delete /f

項目選擇操作指令
====================
/deletevalue 刪除項目選擇項。
刪除啟動管理的bootmgr選擇項項目:
bcdedit /deletevalue bootsequence
刪除(WinPE)操作系統的數值開機項目:
bcdedit /deletevalue winpe
刪除來自指定的操作的Windows PE 數值系統開機項目:
bcdedit /deletevalue winpe
/set 設定項目選擇項數值。
設定操作系統“cbd971bf-b7b8-4885-951a-fa03044f5d71”引導分區“C”:
bcdedit /set device partition=C:
指定的操作系統引導文件“windows\ system 32\ winload.exe”:
bcdedit /set path \windows\system32\winload.exe
設定“NX”為“OptIn”:
bcdedit /set nx optin
更改系統名稱
默認XP系統名稱在Vista啟動管理器中是”earlier version of Windows”,更改:
bcdedit /set Description “Windows XP Professional SP2″
默認Vista系統名稱在Vista啟動管理器中是”Microsoft Windows”,更改:
bcdedit /set Description “Windows Vista 5456”
輸出控制指令
====================
/enum 在儲存中的列表項目。
列出所有的操作系統載入程序啟動項目:
bcdedit /enum OSLOADER
列出所有的啟動管理項目:
bcdedit /enum BOOTMGR
列出默認的啟動項目:
bcdedit /enum
列出指定的操作系統啟動項目:
bcdedit /enum
/v 列出所有活動的項目
bcdedit /enum ACTIVE /v

啟動管理控制指令
====================
/bootsequence 設定啟動列表順序。
設定二個操作系統項目和啟動順序:
bcdedit /bootsequence {cbd971bf-b7b8-4885-951a- fa03044f5d71}
加入操作系統項目為啟動列表最後項:
bcdedit /bootsequence /addlast
/default 設定默認啟動項目。
設定默認啟動項目:
bcdedit /default
設定默認啟動操作系統程序為NTLDR:
bcdedit /default
/displayorder 設定哪一個系統啟動顯示多啟動畫面。
設定二個操作系統項目和在啟動管理顯示命令中被建立操作系統載入的程序NTLDR:
bcdedit /displayorder
把指定的操作系統項目加入啟動管理顯示命令結束:
bcdedit /displayorder /addlast
/timeout 設定啟動暫停數值。
/toolsdisplayorder 設定命令在哪一個啟動管理顯示工具畫面。
設定二個工具項目和內存診斷在那啟動管理工具顯示命令:
bcdedit /toolsdisplayorder
把指定的工具項目加入啟動的結束管理工具顯示命令:
bcdedit /toolsdisplayorder /addlast

為一個啟動應用程序控制緊急處理服務的指令
====================
/bootems
開啟啟動管理緊急處理服務:
bcdedit /bootems ON
/ems
為目前的操作系統啟動項目EMS 開啟:
bcdedit /ems ON
/emssettings 設定緊急處理服務參數。
設定EMS 參數使用基本輸出入系統設定:
bcdedit /emssettings BIOS

實際上,大家打開命令提示符,輸入 bcdedit /? 同樣可以獲得更詳盡的幫助:

BCDEdit 命令列選項

BCDEdit.exe 有下列可用的命令列選項。
BCDEdit / Command [Argument1] [Argument2] …

  • /createstore
    建立新的且空的開機設定資料存放區。建立的存放區並非系統存放區。
  • /export
    將系統存放區的內容匯出至檔案。這個檔案稍後可用於還原系統存放區的狀態。這個命令僅對系統存放區有效。
  • /import
    利用先前使用 /export 選項所產生的備份資料檔案,還原系統存放區的狀態。這個命令會在進行匯入之前,先刪除任何存在於系統存放區中的項目。這個命令僅對系統存放區有效。
  • /store
    這個選項可用於大部分的 BCDedit 命令,以指定要使用的存放區。如果未指定這個選項,則 BCDEdit 會在系統存放區上操作。自行執行 bcdedit /store 命令,相當於執行 bcdedit /enum active 命令。
  • /copy
    在相同的系統存放區中,製作指定之開機項目的複本。
  • /create
    在開機設定資料存放區中建立新項目。如果指定了通用的識別元,則無法指定 /application、/inherit 及 /device 選項。如果未指定識別元或不是通用的識別元,則必須指定 /application、/inherit 或 /device 選項。
  • /delete
    從指定的項目刪除元素。
  • /deletevalue
    從開機項目刪除指定的元素。
  • /set
    設定項目選項值。
  • /enum
    列出存放區中的項目。/enum 選項是 BCEdit 的預設值,因此執行 bcdedit 命令時,若未加上選項,則相當於執行 bcdedit /enum active 命令。
  • /v
    詳細資料模式。通常任何通用的項目識別元都會以好記的簡短形式呈現。指定 /v 作為命令列選項,會將所有的識別元全部顯示出來。自行執行 bcdedit /v 命令,相當於執行 bcdedit /enum active /v 命令。
  • /bootsequence
    指定一次性顯示順序,以用於下一次開機。這個命令類似於 /displayorder 選項,唯一的不同在於它僅用於下一次電腦啟動時。之後,電腦會還原為原本的顯示順序。
  • /default
    指定在逾時過期時,開機管理程式要選取的預設項目。
  • /displayorder
    指定向使用者顯示開機選項時,開機管理程式要使用的顯示順序。
  • /timeout
    指定在開機管理程式選取預設項目之前,要等候的時間 (以秒為單位)。
  • /toolsdisplayorder
    指定顯示 [工具] 功能表時,開機管理程式要使用的顯示順序。
  • /bootems
    啟用或停用指定項目的緊急管理服務 (EMS)。
  • /ems
    啟用或停用指定之作業系統開機項目的 EMS。
  • /emssettings
    設定電腦的全域 EMS 設定。/emssettings 不會啟用或停用任何特定開機項目的 EMS。
  • /bootdebug
    啟用或停用指定之開機項目的開機偵錯工具。雖然這個命令可用於任何的開機項目,但它僅對開機應用程式有效。
  • /dbgsettings
    指定或顯示系統的全域偵錯工具設定。這個命令不會啟用或停用核心偵錯工具,請針對該用途使用 /debug 選項。若要設定個別的全域偵錯工具設定,請使用 bcdedit /setdbgsettings type value 命令。
  • /debug
    啟用或停用指定之開機項目的核心偵錯工具。

轉錄-Creating BCD from scratch with BCDedit.exe and add “Repair my computer” WinRE Recovery Environment

(出處)
My Boot Configuration Data (BCD Store) for my Windows 7 got hosed and I had to delete it and boot off a Windows DVD, hit Shift + F10 to get at a command prompt, delete my old BCD and run Bootrec.exe /rebuildBCD to even be able to boot my system. But RebuildBCD left the file with the bare minimum necessary to boot, nearly blank, and I lost the option to run “Repair My Computer” from the F8 screen. I found a useful website: http://forum.acronis.com/forum/6758 that helped me get back on the right track, but I had to dabble around myself to get all the settings that Windows 7 Installation would normally handle. Follow these instructions to restore your BCD file so that you can run “Repair” off the hard drive instead of digging around for a DVD. “bcdedit /enum all” lists your BCD config and “bcdedit /enum all /v” lists all GUIDs instead of friendlynames. the GUID’s I have listed ARE different (make sure you check the 8th digit). Before you begin you might want to do “bcdedit /export C:\before.BCD”.

1. Create necessary optional entries
bcdedit /create {globalsettings}
bcdedit /create {bootloadersettings}
bcdedit /create {resumeloadersettings}
bcdedit /create {emssettings}
bcdedit /create {dbgsettings}
bcdedit /create {hypervisorsettings}
bcdedit /create {badmemory}
bcdedit /create {memdiag}

2. Establish proper settings for these optional entries
bcdedit /set {bootmgr} INHERIT {globalsettings}
bcdedit /set {current} INHERIT {bootloadersettings}
bcdedit /set {globalsettings} INHERIT {dbgsettings} {emssettings} {badmemory}
bcdedit /set {bootloadersettings} INHERIT {globalsettings} {hypervisorsettings}
bcdedit /set {resumeloadersettings} INHERIT {globalsettings}
bcdedit /set {emssettings} bootems YES
bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200
bcdedit /hypervisorsettings SERIAL DEBUGPORT:1 BAUDRATE:115200
bcdedit /toolsdisplayorder {memdiag}

bcdedit /set {memdiag} description “Windows Memory Diagnostic”
bcdedit /set {memdiag} device partition=\Device\HarddiskVolume1
bcdedit /set {memdiag} path \boot\memtest.exe
bcdedit /set {memdiag} locale en-US
bcdedit /set {memdiag} inherit {globalsettings}
bcdedit /set {memdiag} badmemoryaccess Yes

3. Link “Windows Boot Manager” and primary “Windows Boot Loader” to your existing “Resume from Hibernate” identifier (replace the GUID)
bcdedit /set {bootmgr} resumeobject {8de128fe-03a5-11e1-a7d3-a215a48a5459}
bcdedit /set {current} resumeobject {8de128fe-03a5-11e1-a7d3-a215a48a5459}

4. Create loader entry for the “Recovery”(Repair My Computer)
Check C:\Recovery\ (gain access by adding “Users” READ permission)
Copy & Use that GUID here for device and osdevice – in my case 8de128ff-………… omitting the curly braces { } after [C:]\Recovery
On Line 2 and Line 3, for device and OSdevice, the final GUID after \Winre.wim doesnt exist yet (if you look carefully the 8th digit is changed – and will now have to be created ….
after \Winre.wim, create a NEW UNUSED GUID (change the 8th digit) – it will be used in step 6.

bcdedit /create {8de128ff-03a5-11e1-a7d3-a215a48a5459} /application osloader
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} device ramdisk=[C:]\Recovery\8de128ff-03a5-11e1-a7d3-a215a48a5459\Winre.wim,{8de128f5-03a5-11e1-a7d3-a215a48a5459}
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} osdevice ramdisk=[C:]\Recovery\8de128ff-03a5-11e1-a7d3-a215a48a5459\Winre.wim,{8de128f5-03a5-11e1-a7d3-a215a48a5459}
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} path \windows\system32\winload.exe
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} description “Windows Recovery Environment WinRE”
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} inherit {bootloadersettings}
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} systemroot \windows
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} nx OptIn
bcdedit /set {8de128ff-03a5-11e1-a7d3-a215a48a5459} winpe yes

5. Enable the {current} OS to allow the Recovery Sequence you just created
bcdedit /set {current} recoverysequence {8de128ff-03a5-11e1-a7d3-a215a48a5459}
bcdedit /set {current} recoveryenabled Yes

6. With that NEW UNUSED GUID you just created in step 4, create the “Ramdisk Options” entry for the Recovery Sequence
On Line 4, after \Recovery\ – use the GUID you found in C:\Recovery\ -again Omit the Curly braces { }
bcdedit /create {8de128f5-03a5-11e1-a7d3-a215a48a5459} /device
bcdedit /set {8de128f5-03a5-11e1-a7d3-a215a48a5459} description “Ramdisk Options”
bcdedit /set {8de128f5-03a5-11e1-a7d3-a215a48a5459} ramdisksdidevice partition=C:
bcdedit /set {8de128f5-03a5-11e1-a7d3-a215a48a5459} ramdisksdipath \Recovery\8de128ff-03a5-11e1-a7d3-a215a48a5459\boot.sdi

Now you are done, and might want to export again to not lose your work, “bcdedit /export C:\AFTER.BCD”

常見用途:

bcdedit /enum all 列出存放區中的所有項目
bcdedit /store S:\EFI\Microsoft\Boot\BCD /enum all 列出(S:\EFI\Microsoft\Boot\BCD)存放區中的所有項目

更多延伸閱讀

修改 BCD 存放區範本
Walkthrough: Boot Windows PE from a UEFI-based Hard Disk

2017/01/15

新垣結衣,這幾年日劇演出也太精彩了,根本是收視保證!

最近剛追劇看完2016秋季劇月薪嬌妻(另譯:逃避雖然可恥但有用),終於又領略這個廣大鄉民的女友的新垣結衣魅力,這部戲就是拍給宅男工程師的勵志片吧,不過這個在現實生活中幾乎不可能發生,怎麼可能有個這麼正的妹一天到晚暗戀你然後對一個宅男展開追求!

但先撇除掉劇情不講,新垣結衣在這片日劇裡面也太萌了,雖然28歲但是依舊輕鬆駕馭25歲的腳色,不過她身高真的滿高的耶,後來查了一下資料新垣結衣從剛出道166公分持續長高,目前應該有170公分吧!

看來可以把之前他的作品都拿出來看看, 因為我也好久一陣子沒看日劇, 上次瘋狂追劇應該是2004~2005左右, 大四快畢業準備研究所的時候, 看日劇很舒壓, 有”世界中心呼喊愛情”, “H2”, “午餐女王”…等等, 算一算時間竟然也10年前了..當時還必須要先透過BT下載, 每週每週等待豬豬日劇字幕組的更新release…充滿回憶的一段時間! 現在看到新垣結衣的月薪嬌妻好像勾起塵封已久的日劇魂, 許多回憶湧上心頭~

和新垣結衣一起購物!
這段影片裏面有提到剛出道2001到2004到2007然後到現在2016的心路轉折,還有私下的新垣結衣

新垣結衣 歷年出演作品

人氣女星新垣結衣1988年6月11日出生於沖繩縣那霸市,治愈的笑容,清純可愛氣質,讓人過目難忘。從最初的些許青澀,到後來的萌屬性及逗比屬性全開,這中間的過程新垣結衣收獲了穩定的高人氣。

2005年07月《龍櫻(東大特訓班)》 飾演香阪佳乃

本劇根據日本著名漫畫《龍櫻》改編,講述的是一個暴走律師使偏差只有36的落後的高中學生們,順利考入東京大學的感人故事,故事的取景是龍山高中。現在回想起來,當時由阿部寬、山下智久、長澤雅美、中尾明慶、小池徹平、新垣結衣、沙耶子等組成的陣容實在是豪華,劇情也非常熱血。就是讓人疑惑,新垣結衣當年出演的小太妹,皮膚有點黑。

截圖看起來是因為這個角色香阪佳乃,是個畫109辣妹裝的小太妹,所以新垣結衣要把自己上古銅色的粉底,不然看隔年2006的第一本寫真書就知道根本是白肉底!可能剛滿17歲比較年輕還有點嬰兒肥, 而且這個角色本來就是設定為臭臉小太妹…

新垣結衣2001年代替姊姊參加《nicola》模特兒比賽,獲得最優秀獎。2005年演出《龍櫻》而受到關注。2006年出版第一本寫真集《水漾青春》。2007年從日出高等學校畢業後專注於演藝圈發展。

2005年10月 女之一代記 第2夜 出演:越路吹雪(少女時代)

2006年01月 真愛 = トゥルーラブTrue Love 主演:麻生菜摘

2006年01月 她的情書 = 彼女の恋文 主演:川村紫

2006年04月 辣妹掌門人 = ギャルサーGAL CIRCLE 出演:ナギサ(18)(坂下渚(Nagisa))

2006年07月《MyBoss MyHero》 飾演梅村光

長瀨智也主演的這部日劇,笑料十足,講述年輕的黑社會老大柛真喜男隱瞞自己的身份成為高中生,在高中生活中成長的校園青春喜劇。新垣結衣飾演的同班同學,是天真爛漫、溫柔且懂事的乖乖女,在班上很受歡迎,真喜男的女神。

2007年07月《父女七日變(父女變變變)》 飾演川原小梅
本屆根據日本同名暢銷書改編,共七集,講述在一次事故中,47歲的父親(館博飾)與16歲的女兒來了個靈魂互換,然後兩人以對方的思維方式繼續生活在現實中。而此前關系一直很冷淡的父女兩人,也因為這次事故開始交流,開始逐漸理解對方,以輕松、溫馨的風格贏得了固定的收視群。

2007-08-18 電影:戀愛室內佈置 主演:ユイ(青木結)

2007-09-08 電影:暴走少年 = ワルボロ 出演:山田規久子

2007-11-03 電影:《戀空》 飾演田原美嘉
電影《戀空》是由手機小說改編而成,由今井夏木導演,新垣結衣、三浦春馬主演的一部主要講述關於友情、親情、愛情的純愛電影。電影情節大家想必已經非常熟悉,就是現在回想起來,是不是會覺得三浦春馬的造型有點非主流,故事情節太俗套了呢。不過,那種純愛的感覺還是很美的。

⑤《Code Blue》系列飾演白石惠
本劇是由山下智久、新垣結衣、戶田惠梨香等為主角的電視劇,以急救中心作為舞台,描繪年輕的飛行醫生候補生和指導醫生們的互動關系,和在直升機裡參與的人們的奮斗和糾紛。新垣結衣出演的白石惠,作為醫生有於生俱來的天分,但與世無爭,常常都處於被動狀態。不想失敗,也不想讓人看見自己做得難看的樣子,常常在關鍵的時候退縮,也可以說是當今年輕人的典型。不過,漸漸自然受到身邊眾多的專業人士影響,特別是那位推開身邊一切,走自己人生道路的藍澤。看著他的身影,她開始認真考慮自己作為醫生的責任,和自己作為一個人所盼望的生活態度。

⑥《微笑(Smile)》(2009年)飾演三島花
這是一部以人類之間的愛為主題的電視劇。松本潤所飾演的男主角早川維托是菲律賓人與日本人的混血兒,雖然有著十分復雜的成長史,但卻一直都十分地陽光活潑,臉上永遠掛著讓人難忘的笑容。由新垣結衣所飾演的女主角三島花,則是一個因事故而得了失聲症然而卻也始終以一副陽光般笑容示人的純潔少女。中井貴一則飾演了一位有著誇張笑容的喜歡顯擺的律師事務所所長伊東一馬。早川維托、三島花以及伊東一馬,在三個人的笑容背後隱藏著的秘密與充滿傷痕的過去最終將這三個人連在了一起。本劇講述這三個人的相見,相愛以及反抗,由此與命運做抗爭並在社會上引發了不小的轟動。

⑦《花水木》新垣結衣22歲(2010年)飾演平澤紗枝
是由新垣結衣搭檔生田斗真出演的一部純愛電影。影片靈感源自一青窈的同名歌,這部影片在北海道以及美國紐約、加拿大等地拍攝。影片講述一對男女經歷了邂逅、別離、挫折、重逢,編織出跨越十載的美麗戀曲。
線上看: 點我

⑧《全開女孩》(2011年)飾演川若葉
2011年夏季檔月九日劇,由初次主演月九的新垣結衣主演,她負責飾演的新人女律師川若葉,受到了來自於所長的委托,要求幫忙照顧她5歲的女兒。川若葉為了照顧好所長的女兒,無奈之下來到了一家托兒所,在那裡,她遇到了無學歷、無財產、無將來的“三無”男人山田草太(錦戶亮飾),各自為了照顧孩子而感到苦惱的兩個人,在不斷地經歷著各自矛盾的過程當中,逐漸地對彼此產生了愛意。

⑨《飛翔公關室》(2013年)飾演稻葉裡佳
本劇講述在帝都電視台工作的稻葉裡佳(新垣結衣 飾)曾被認為是有前途新人,但因為工作態度過於強硬,采訪時引發不少爭執,被投閒置散成為非黃金時段的導演。因被命令做制服特集,前往自衛隊幕僚參謀部公關室進行采訪,遇上曾是戰斗機飛行員的空井大佑(綾野剛飾),故事由此展開……

⑩《Legal High》系列飾演 黛真知子
本劇將原本嚴肅的法律題材搭配上搞笑誇張的漫畫風格,獲得觀眾好評,贏得東京日劇大賞連續劇部門優秀賞等多項大獎,堺雅人、新垣結衣等演員的表演也都可圈可點。新垣結衣飾演的黛真知子,綽號“晨間劇女主角”,視鋤強扶弱為使命,超強正義感,堅持信念絕不妥協,拼命讀書通過司法考試的熱血新人律師。古美門和黛真知子信念相悖,事事針鋒相對,兩人的對手戲非常有趣。

臉大胸小又懶,新垣結衣為什麼還可以這麼火?
https://kknews.cc/zh-tw/entertainment/p8vonz.html
想要把我失落的10年2006~2016補起來,因為這10年都沒有好好停下腳步看看日劇,雖說一來沒有好的演員吸引我,都只有看當下超紅的日劇,如2006交響情人夢,2011家政婦女王,2013半澤直樹,陪老婆待產看2014派遣女醫2009深夜食堂,偶爾在電視上看到的2016房仲女王。

而且2005的我真的看了滿多日劇,後來可能真的變忙碌了,開始上研究所然後開始上班,然後結婚養小孩…加上我自己內心覺得日劇都滿老掉牙的說教模式,所以這10年都沒有一個很強的原因讓我追劇,直到新桓結衣的月薪嬌妻,不論劇情拍攝手法與運鏡方式都跟以前不同!

2017/01 開始追劇

  • 月薪嬌妻
  • 王牌大律師
  • 龍櫻(東大特訓班)…
    • 這是2005年7月在日本播出,我當年的1月還有每週追劇H2,哇!有種接續上當年的進度的感覺,感覺好充實呀!
  • 父女七日變
  • 戀空 電影線上看 20170218
  • 求婚大作戰 / 長澤雅美 山下智久

    2017/01/06

    Windows平台 - BAT批次次指令: SET 的功能介紹

    ‧SET :顯示、設定或移除 cmd.exe 環境變數。

    ‧指令詳解:

    SET [variable=[string]]      variable  指定環境變數名稱。      string    指定設定給變數的一系列字元。

    僅輸入 SET 而不加上任何參數,可以顯示目前的環境變數。

    如果您啟動了擴充指令,SET 指令有以下的改變:

    如果執列 SET 指令而且只推演變數名稱,沒有等號或數值的話,指令會顯示出全部字首符合 SET 指令中指定變數名稱的全部變數值。
    例如:

        SET P

    會列出全部以 ‘P’ 為開頭的環境變數。
    如果在目前的環境中找不至變數名稱,SET 指令會將 ERRORLEVEL設為 1。
    SET 指令不將等號 (=) 視為變數名稱的一部份。

    有兩個新參數已經加至 SET 指令中:

        SET /A expression    SET /P variable=[promptString]

    /A 指定在等號右方的字字串是一個要被自變數的數位自變數式。
    您可以用運算式進列簡單的自變數,而且支援下列的自變數子
    (依照自變數優先(順序)順序由高至低佇列):

    () – 組成一群
    ! ~ – – 單元運算子
    * / % – 數位自變數元
    + – – 數位自變數元
    << >> – 邏輯位移
    & – 位元自變數 and
    ^ – 位元自變數 exclusive or
    | – 位元自變數 or
    = *= /= %= += -= – 指定
    &= ^= |= <<= >>=
    , – 自變數式分隔字元

    如果您使用了任何邏輯或餘數自變數子,您必須將自變數式兩邊括上引號。
    任何在自變數式中非數位的字字串會被當作環境變數,並且在使用前會先將這些環境變數交換為數位。

    如果您所指定的環境變數名稱尚未在目前環境中定義,那麼他的值會被設為 0。
    這可以讓您用環境變數值來做自變數,而不必打入全部的 % 符號來找取得他的值。

    如果 SET /A 是用指令檔之外的指令列執列,他會顯示自變數式最後的數值。
    指定自變數子需要有個環境變數在等號的左方。

    不同進位數:
    0x 字首在數位前方代表格十六進位數位、0b 字首代表格二進位數位或 0 字首代表格八進位數位,否則數位值都是指十進位數位。
    所以 0x12 就和 18、022 等相同。
    請注意八進位數位可能容易弄錯: 像 08 和 09 就不是正確的數位,因為 8 和 9 並不是八進位的正確數位。

    /P 參數讓您設定指令列的使用者輸入變數值。
    在讀入找取輸入指令列之前,顯示指定的 promptString。
    promptString 可以是空白。

    環境變數找取代功能已經有下列增強:

    %PATH:str1=str2%
    會將 PATH 環境變數展開,找取代每個發現的 “str1” 與 “str2″的擴充結果。
    “str2” 可以是空白字字串,這會從擴充扇出中移除全部 “str1″。
    “str1” 可以用星狀圖形開始,這將會從擴充扇出的開頭開始,對應至從全部第一個發現含有str1 的項目。

    您也可以為擴充功能指定子字字串。

        %PATH:~10,5%

    這將會擴充 PATH 環境變數,然後只使用擴充結果的第 11 個(位移 10)字元後的 5 個字元如果長度未指定,將會預設為上次使用的變數值。
    如果數位(位移或長度)是負數,使用的數位將會是環境變數的長度加上位移或指定長度。

        %PATH:~-10%

    將抽出 PATH 變數的最後 10 個字元。

        %PATH:~0,-2%

    將抽出 PATH 變數的最後 2 個字元。

    最後,系統加入了延遲環境變數展開的支援。

    在預設狀態下,指令展開會啟用這項目支援,但是您可以在 CMD.EXE 用 /V 指令列參數來啟動/停用這個功能。
    請參看 CMD /?

    延遲環境變數展開功能可用來避開展開功能限制。
    這項目限制是發生在指令列讀入找取程序,不是發生在執列程序。
    下面的範例說明了立即展開變數時會發生的問題:

        set VAR=before    if "%VAR%" == "before" (        set VAR=after;        if "%VAR%" == "after" @echo If you see this, it worked    )

    這個例子永遠無法顯示 echo 訊息,因為在兩個 IF 敘述中的 %VAR% 會在第一個 IF 敘述被讀入入時便被展開。
    這是因為他是邏輯上推演了 IF 的內部,而內部又是一個複合敘述。
    所以在複合敘述內的 IF 實際上是用”before” 和 “after” 來比較,而這永遠不會為真。
    同樣的,下面的例子也不會作用:

        set LIST=    for %i in (*) do set LIST=%LIST% %i    echo %LIST%

    這個例子中並不會建立目前目錄中全部檔案的清單,相反的只會將 LIST 變數設為最後一個找至的檔案。
    同樣地,這是因為 %LIST% 只有在 FOR 敘述第一次被讀入入時才展開,此時 LIST 變數是空的。
    所以我們實際執列的 FOR迴圈是:

        for %i in (*) do set LIST= %i

    這只是重複的將 LIST 設為最後找至的檔案。

    延遲環境變數展開讓您可以用一個不同的字元 (驚嘆號) 在執列時展開環境變數。
    如果啟動了延遲環境變數展開,上面的例子可以被改寫下列而正常作用:

        set VAR=before    if "%VAR%" == "before" (        set VAR=after        if "!VAR!" == "after" @echo If you see this, it worked    )    set LIST=    for %i in (*) do set LIST=!LIST! %i    echo %LIST%

    如果您啟動了指令擴充,有幾個動態環境變數會被展開但是不會出現在 SET所顯示的環境變數清單中。
    這些變數的值會每次在這些變數被展開時動態地重新計算如果使用者用這些變數的名稱來定義變數時,
    則這個新定義會疊層以下所列的動態變數:

    %CD% – 展開為含目前目錄的字字串。
    %DATE% – 展開為與 DATE 指令格式相同的目前日期字字串。
    %TIME% – 展開為與 TIME 指令格式相同的目前時間字字串。
    %RANDOM% – 展開為一個在 0 和 32767 之間的整數亂數值。
    %ERRORLEVEL% – 展開為目前的 ERRORLEVEL 值
    %CMDEXTVERSION% – 展開為目前的指令處理擴充功能的版本號碼。
    %CMDCMDLINE% – 展開為執列指令處理器前的原始指令列。

    2016/12/30

    理財筆記- 如何選股, 以及股票的買進與賣出時機

    散戶投資股票之優勢為選股與時間, 由於我們的資本少少因此更許要慎選標的物, 根據每個人自己能夠接受的常現或短線作決定, 但我個人建議要走長線才會提高勝率, 不然只是在賭博!

    選股SOP

    1. 是否這間公司(股票)你打算存股10年?
      • 巴菲特曾說過:「如果你不願意擁有一支股票10年,那就不要考慮擁有它10分鐘。」
      • 巴菲特還說:「我最喜歡持有一支股票的時間是永遠。」
    2. 是否這間公司(股票) 每年的配股配息是穩定的 ? 殖利率至少要3%以上, 或者它有好的股東報酬率(ROE) ? 至少要8%以上
    3. 是否這家公司的收益模式是穩定的? 客戶願意常常消費, 或著有跟客戶簽長約
    4. 本益比低於15%,
    5. 是否為該產業的前兩名? 而且是寡占市場?
    6. 買進該股票的時候就要考慮是存股, 還是賺波段?

     

    買進

    1. 存股型股票, 等波段回檔時買入。若持續沒回檔,可以考慮其他行業回檔的股票,讓投資產業組合多樣化
    2. 好公司被錯殺, 股價被低估
    3. 觀察還原股價技術線圖, 若是股價回檔到一定程度可以考慮買進, 前提是這家公司的還原股價長線是持續上升

    賣出

    1. 本質變壞, 連兩季出現虧損
    2. 該產業逐漸失去護城河, 這塊市場轉向新的商業模式

    2016/12/27

    IDE, AHCI, RAID硬碟模式

    硬碟通常提供 3 種模式︰IDE、AHCI 和 RAID。
    AHCI 和 RAID需要安裝相對應的驅動程式。
    否則此硬碟機可能無法被偵測。

    1. IDE : 一般硬碟模式,不可熱插拔
    2. AHCI : SATA模式,可熱插拔和可啟動NCQ (必須SATA硬碟)
      • AHCI(進階主機控制器介面)是一種由英特爾制定的技術標準。AHCI需在 BIOS 中啟用
      • AHCI 模式具有 3 大優勢︰
        • 支援 NCQ(原生指令排序),從而使 SATA 硬碟機一次能夠接受一個以上的指令並能以動態的方式對指令進行重新排序以獲得最大效率。
        • 支援裝置熱插拔功能。
        • 在開機時,支援多個硬碟機的交錯加速。
      • *如果您是使用IDE模式來安裝Windows,之後再從BIOS裡將設定變更為AHCI模式然後重新開機,可能導致系統出現藍底白字且無法進入Windows。
      • 如果您希望啟用AHCI,建議您重新安裝Windows,並且於安裝過程載入AHCI驅動程式。
    3. RAID : 一般需要兩個以上的硬碟,將多個硬碟組合成為一個硬碟以提高硬碟效率。
      • 根據不同的 RAID 模式就有不同的功能。
        • 例如 RAID-0 將兩顆硬碟組合起來提高讀寫速度,比較風險。如其中一顆硬碟出問題,整個RAID-0 資料就全滅。
        • RAID-1 組合起來成為鏡像備份,比較安全,但沒有提高讀寫速度。
        • 也有類似 RAID-0+1 模式,同時具備 RAID-0 和 RAID-1 的模式,但最低限度需要 4 顆硬碟。

     

    2016/12/20

    修正visual studio 的 "Some bytes have been replaced with the Unicode substitution character while loading file"

    剛安裝visual studio去編譯, 發現以下錯誤:

    Some bytes have been replaced with the Unicode substitution character while loading file C:\Users\xxxxxxxx\1305376\VariableBinder.cs with Unicode (UTF-8) encoding. Saving the file will not preserve the original file contents.

    參考自這裡

    大致上是說你的一些檔案被修改且取代了, 所以內容變得很奇怪visual studio無法編譯…

    這個問題可能發生在各版本,

    visual studio 2010 2013 2015, 因為跟系統的設置有關係啦…

    解法:

    Just ran into similar issue and found a way to fix it:

    1. Open “Region” from Control Panel
    2. Choose “Administrative” tab
    3. Check if  your “Language for non-Unicode programs” is any UTF-8 or Unicode language that other than English.
    4. If so, please click “Change system locale…” and change it to English.
    5. It then works after locale change and rebooting.

    2016/12/16

    軟體開發之 Iterator 模式 (疊代器)

    (參考自設計模式)
    在設計程式的過程中,經常有的需求之一,就是希望逐一取得某物件內部的所有資料(或物件),像是取得ArrayList中所有 的資料,或取得HashSet中所有的資料。

    由於物件在實作內部資料的組織時方式不盡相同,因此也只有物件本身才知道如何收集內部資料,因此Iterator的實作,通常會是物件的內部類別,外界無 需關心,只要知道如何操作Iterator即可。

    以Java 的Collection API設計來說

    在JDK 1.4時,iterator()方法是定義在Collection介面上,每個Collection的實現類別,都會有iterator()方法,在 JDK5之後,則將iterator()方法定義在Iterable介面上,而Collection介面則繼承了Iterable介面:

    例如,您也許會希望設計一個foreach方法,可以將丟給它的物件中的資料逐一取得並顯示在主控台中:

    List list = new ArrayList();...foreach(list);Set set = new HashSet();....foreach(set);

    因為List是有序結構並有索引特性,而Set則為無序不重複的特性,兩者所提供的公開存取方法也不相同,如何將foreach方法設計的通用是個問題。

    無論是List或Set,都有個iterator()方法可以傳回一個Iterator物件,這個物件會收集List或Set物件內部資料,並有 hasNext()、next()方法可以使用,而實際上,這個方法是繼承自Collection介面(List與Set的父介面),您可以這麼設計 foreach方法:

    public static void foreach(Collection collection) {    Iterator iterator = collection.iterator();    while(iterator.hasNext()) {        System.out.println(iterator.next());    }}

    這是Iterator模式的實現,不同的物件內部在組織資料方式並不相同(陣列?鏈結?雜湊?),所提供的公開存取介面也不一樣,為了有一致的方式來逐一取 得物件內部的資料,您可以讓一個Iterator於物件內部進行收集,之後傳回Iterator物件,透過該Iterator來逐一取得物件內部資料。

    其他語言的一些iterator的範例:

    C#

    // Method that takes an iterable input (possibly an array)// and returns all even numbers.public static IEnumerable GetEven(IEnumerable numbers){    foreach(int i in numbers)    {        if (i % 2 == 0) yield return i;    }}

    C++

    templatevoid printall(InputIterator first, InputIterator last){    for(; first != last; ++first)    {        std::cout << *first << std::endl;    }}

    JAVA:

    Iterator iter = list.iterator();//Iterator iter = list.iterator();    in J2SE 5.0while (iter.hasNext())    System.out.println(iter.next());

    PHP

    class a implements Iterator {  var $keys = array("k1", "k2", "k3");  var $vals = array("v1", "v2", "v3");  var $pos = 0;  function current() {    return $this->vals[$this->pos];  }  function key() {    return $this->keys[$this->pos];  }  function next() {    $this->pos++;  }  function rewind() {    $this->pos = 0;  }  function valid() {    if($this->pos>=count($this->keys)) {      return false;    }    else {      return true;    }  }}$a = new a;foreach($a as $k=>$v) echo "$k:::$v\n";執行結果:
    Feng-Hsu-Pingteki-MacBook-Air:ironman6 fillano$ php 1-4a.phpk1:::v1k2:::v2k3:::v3

    2016/12/05

    台灣歷年通膨率 / 主計處通膨率 / 消費者物價指數年增率 查詢

    可以看:
    1. 消費者物價指數及其年增率
    2. 消費者物價指數年增率(%)

    通貨膨脹會讓你的錢越來越沒價值
    要了解什麼是通貨膨脹,我們可以先從字面上的意義來看,通貨就是通用貨幣,也就是錢的意思,通貨膨脹就是錢膨脹了,
    換句話說,就是錢越來越沒價值,一樣的錢能買的東西越來越少。想知道東西到底漲多少就要看通膨率, 如果我們把通貨膨脹的概念數字化,就可以很容易的比較東西到底貴多少。所以經濟學家們定義了一個數字,叫做通膨率


    通貨膨脹隨時隨地都在發生

    還記得我小時候最喜歡吃巷子口的小吃攤,我印象很深刻,當時一頓飯加小菜,吃下來不用50元。國小的時候最喜歡吃零食,那時候最夯的就是科學麵,然而,隨著時代的演進,好萊塢巨星都幫忙代言了,價格也漲了不少!所以你也可以回想一下,從小的成長歷程中,哪些東西也漲價了呢?漸漸的你會發現,不管你有沒有注意到,通貨膨脹隨時隨地都在發生。

    消費者物價指數 (民國100年=100)

    消費者物價指數( Consumer Price Index ),簡稱為CPI,又稱生活成本指數( Cost of Living Index ),係指各國政府定期對國內各類商品的零售價格,利用加權平均的方法,所計算出來的價格指數。消費者物價指數的內容,主要由食品、房屋成本、交通、水電、衣著、文教、休閒等等與民生息息相關的商品項目所組成。一般而言,各國的工資及退休金的調整幅度大多是按消費者物價指數的漲幅來調整。

    消費者物價指數年增率 (%)

    各國央行升息、降息牽動全球投資人的心,而央行在決定貨幣政策時,往往將通膨視為重要指標,一般國家通常以「消費者物價指數(CPI)」做為計算通貨膨脹率的依據,消費者物價指數常常聽,但你真的了解嗎?而升息、降息為什麼又跟通膨、跟消費者物價指數有關呢?

    消費者物價指數(Consumer Price Inedx,CPI)為反映民生有關的產品、服務價格變動程度的指標,各國會將食衣住行育樂及醫療等,與生活息息相關的消費性商品和服務納入。通常專責統計 CPI 的單位,會定期以抽樣方式調查民眾的消費型態,整理出一組較能代表全國民眾消費狀況的消費組合逐月追蹤、統計。以台灣而言,包含食物、交通通訊、衣著、醫療保健、居住、教養娛樂及雜項等七大類。

    在分配各細項權重後,算出一個總指數,再選定一個基準年(月)做為基期,並將基期設定值設為 100,以方便各期的 CPI 數值可直接與基期做比較,各國 CPI 的編制通常大同小異,但在各細項的比重取捨,以及基期的選擇上會有所不同。台灣每逢民國年度尾數為 0 和 5 時,變更一次基期,目前以 2011 年(民國 100 年)為基期。透過與基期年度相比可觀察國家物價與購買力間的消長,並可從 CPI 月增與年增率來判讀通膨壓力和趨勢。

    職場分享之向上管理 - 工作滿足感的9成來自與上司(主管)之間的關係

    「糟糕的人際關係」這是所有職業都會有的壓力,像是最近開始受重視的職權騷擾、性騷擾,甚至是和上司或公司前輩間關係不好等等。此外,打工族或是派遣員工這類,占所有勞動人口3分之1的非典型就業人員,容易在職場上遭受排擠,午餐時可能獨自一人在辦公室吃,容易產生覺得孤獨,有人際關係出現問題等狀況。

    上班族在工作中得到的滿足感,有9成握在與上司的關係上

    這些壓力之中,我認為職場上的人際關係最為麻煩也最容易成為壓力主因。以我個人來說,上班族在工作中得到的滿足感,有9成握在與上司的關係上。遇到好上司的人,工作起來特別幸福。我曾接觸過的,被認為有很高潛力的優秀上班族,幾乎都會說:「我能有現在的成就,都得感謝以前一起工作的上司。」由此可見影響有多大。

    當然,也有遇到相反狀況的人。養命酒製造株式會社於2013年所進行的「關於上班族壓力與腸胃不適的實際狀況調查」中發現,佔據最容易感到胃痛的壓力第一名的,就是『與上司間的關係』。最為需要養命酒的,就是這些身懷辦公室內上下關係問題的人。與上司的關係一旦惡化,就容易讓人提出辭呈。上班族辭職的最多原因之一就是與上司間的人際關係問題,這也會影響到自己的職涯履歷,千萬不能輕視。特別是與不好的上司一起工作,每天都會覺得活在地獄中。

    如果自己很認真工作,卻無法得到上司認同時,自然會感到很失望吧。其中也會出現不只不認同自己的工作,甚至還會阻撓自己的上司。只不過,就算可以選擇公司,卻無法選擇上司,我想,幾乎沒人能夠自己選擇上司吧。此外,有些上司的個性或是行為本身就有問題,就算希望他能夠朝好的方向改變,卻不是件容易的事情。

    部下對上司的影響力極為微小

    幾乎沒有上司的態度或言行會朝著部下期待的方向變好,非常不幸的部下對上司的影響力極為微小。我曾經也和不擅長相處的上司一起工作過,也曾經希望「他能夠改變和我的相處方式」,但期待越大失望也越大,只留下一個慘痛的經驗。這是因為自己設法想去改變一個無法改變的事物。

    擁有恢復力的人,會面對現實且合理接受。並不是努力去改變一個無法改變的事物,而是聚焦在能夠改變的事物上面工作。

    遇到這種職場中上下關係問題所導致的壓力時,無法改變的就是上司的個性、思考方法與講話方式。那麼,能夠改變的事物是那些呢?那就是面對上司的言行時,「自己該如何反應」。面對上司的態度或是說話內容,該如何接受、怎麼應對,是自己可以控制的範圍。

    應該由部屬主動,比較容易扭轉

    作為主管的,理應對部屬互信互讓,試著接近部屬,不過《上司是麻吉,工作更順利》一書作者本間正人卻認為,上司要處理的事情遠多過部屬,應該由部屬主動,比較容易扭轉彼此的相處。 

    「畢竟我們所要面對的,無非是上司一個人,但改從上司立場來看,部門主管幾乎都有兩人以上的部屬。」「以一對多」的現實令很多主管即使意識到自己脾氣不好,也未必有多餘心力處理。 如果你面對的正是較為情緒化、火氣大的主管,該如何與他共事,化解他可能帶來的負面影響? 

    被罵當下:虛心接受

    通常部屬在被老闆罵的當下,不外乎兩種反應。第1種,靜默不語,只是低著頭不說話;第2種,試圖反駁。但這兩種人都會讓老闆更生氣、罵得更兇。其實「事件」本身都是中性的,是因為人選擇負面反應、負面行為,才使得事件變得負面。上班族的EQ要練得比主管高,訓練自己在當下就能轉化心態,不隨主管的心情起舞。「主管通常是對事不對人,只是用詞可能不適當,所以我們不應該以『受害者』的角度自居,而是要當個『問題解決者』。」

    鉅微曾經做過績效與壓力來源的交叉分析,發現高績效與中低績效的工作者雖然都有壓力,但是壓力來源不同。前者的壓力來自自我,後者則認為都是主管、環境、工作本身使他感到壓力,「如果一直處在受害者角度,不斷怪罪他人,很難成功,」范淑婷分析。

    當你排除了自己的情緒後,就能比較心平氣和地詢問主管:「我怎麼做會比較好?」把對話導向問題該如何解決。 《就是愛被罵》的作者鄭匡宇有很多被罵經驗,他通常在當下會跟主管說:「是,我了解,我會改進。」聽起來似乎姿態很低,其實不然。他進一步指出,因為你並沒有說出「我錯了」、立即同意是自己的錯誤,但又能藉此說法平撫主管情緒。 若把時間拉長,不妨透過一次次的自我修練拉高思考層次。

    「被罵」在整段職場生涯中,不過是個小事件,可以藉此反芻,以後絕對不這樣對待他人;也可以把這次事件做為未來帶部屬時分享的故事。 當然,有些主管在氣頭上時,的確會口不擇言,讓人因為他的人身攻擊而感到自尊受損,這時候,修復自我最好的方式就是正面以對。 心情修復:宣洩後再激勵自己 如果心情被干擾,可以先找個安靜的地方發洩情緒,或是利用讓自己開心的事物轉移注意力。「當你不再陷入壞情緒中,你才有腦袋想出解決辦法,」鄭匡宇指出。

    「這時不建議先找同事抒發,」范淑婷強調,被主管罵完後,自己也是情緒不佳,這時候找同事宣洩,只會湊在一起抱怨。「抱怨解決不了問題,你可以把『正面』因素加進你和同事的對話中,」鄭匡宇舉例,當同事們聚在一起抱怨主管時,你可以說:「老闆也這樣罵過我,但我們可以怎麼做?」一旦出現「該怎麼辦」的字眼,就能把大家導向解決問題的正面討論。

    除了心情受到影響,很多人可能開始指責自己、喪失自信心。《別怕大動物──搞定主管,不怕丟飯碗》作者克莉斯汀娜‧薇納(Christine Weiner)表示,一切取決在己。當自己決定要過正面並自主的生活,就不會受到主管或自己生氣、憤怒的影響。

    辭職? 但是到這地步之前你可以…

    「了不起我們還可以辭職,但是到這地步之前,你還可以做很多事來增加自信心。」她建議找一張紙,花5分鐘寫下10~15種自己職場的優勢,釐清主管借重你的地方,例如「我很可靠」、「客戶很欣賞我可親的態度」、「我做事認真而且有原則」等等正面語錄,貼在浴室鏡子或是電腦螢幕旁,每天看著這些語錄,會使它漸漸產生效果。

    或是找到一塊工作領域內的「樂土」,幫助自己工作愉快。《搞定魔鬼上司》作者肖恩‧貝爾丁(Shaun Belding)說明,首先你要問自己一個問題:我希望從工作中得到什麼?工作中有什麼事能夠帶來滿足?一旦找出你在工作中最感驕傲的一點,下一步就讓自己每天都能享受這一點。「對自己工作感到驕傲的好處是,沒有人能夠剝奪你得到的樂趣,而且提高你的自信度,」肖恩解釋。

    背後因素:為我好還是出氣筒?

    主管為什麼會變得EQ低?也許他一開始也希望對待下屬如朋友,耐心指導、挖掘他們的潛能,但是當數字、會議和目標進度、績效壓力重重壓在他身上,個性再溫和的主管也可能感到力不從心。 身處高壓下,本來就容易使人覺得煩燥、不耐煩,再加上許多管理者並沒有經過階段性的培養就受到拔擢,管理職使他焦慮,不懂得如何應付下屬的問題,只好以罵人或教訓的態度回應。 不過,從上司罵你的內容中,其實能夠清楚感覺到他是為你好,還是只是遷怒於你。范淑婷認為,如果上司明確指出你應該改善的地方、具體提出建議,就是為你好。如果他只是無的放矢,提不出任何解決辦法,那就表示你只是無辜地成為出氣筒。 內容釐清後,你可以努力改進,但若覺得主管的態度你無法接受,與其亂猜他罵你的原因,惠悅企業管理顧問公司亞太區企業併購諮詢業務負責人周淑媛建議,乾脆直接找主管問清楚。像是與主管約個時間吃午餐,並在事前先找同事角色扮演,預先模擬要講的內容,揣摩主管可能的反應。

    「講話最好不要太過隱喻,以免被主管識破更尷尬,」周淑媛說,你可以向主管說明當天情況帶給你的情緒,問他之後該怎麼做,讓他了解你對彼此關係的重視,這麼做都是為了未來合作更順暢。 萬一你一時衝動,跟主管起了正面衝突,「沒有什麼事情是不能回頭的,」鄭匡宇提醒。只要懂得善後,還是有機會修補裂痕。

    關係修補:識時務者,主動溝通

    除非你不想繼續待在這家公司,或是你的能力很強,主管不敢輕易請你走人,但為了辦公室和諧,以及避免兩人日後可能產生的心結,身為下屬都有必要做一些動作。否則心結產生,你更容易陷入受害者的角色,認為主管老是看你不順眼,對自己挑三撿四。

    建議寫一張小紙條給主管道歉;同樣的,還是可以約主管談談,但時機以及怎麼談都非常重要。 肖恩表示,和主管進行開誠布公談話的最佳時機是一天的開始,「在你的上司還沒進入每天程式化的例行公事之前,在某些事情出了問題、惹得他情緒不好之前,早點去上班。」 第2,找一個安靜的地方;最後,事先通知你的上司。如此,你的上司不但能夠預先安排好時間,也同時知道你要和他談的事情十分重要。 談的內容要經過審慎思考。

    首先,先針對你當天「以下犯上」的行為道歉,因為這一部份的確是身為下屬的不對。 再來,坦承與主管溝通他對你造成的影響,肖恩舉例,你可以說:「當您說出這些明顯具有諷刺意味的話語後,我覺得它打擊到了我的工作熱情,它給我的感覺是,您不欣賞我做的事情。」

    如果主管回應,他對你的工作不滿意,你就可以接下去問:「那我能做些什麼事情來達到您的期望?」

    部屬與老闆因為位置不同,看事情的角度也會不同。上司可能不知道自己的行為對於周圍的人有什麼影響,就算他感覺到自己使你不舒服,也未必正確知道自己把你逼到什麼程度。所以一定要給主管適當的回饋,讓他知道可能傷害到了你。

    最後一步:職災認定

    當你已經試過種種方法,都無法改變老闆對你破口大罵的狀況,還有最後一步可以請求權益上的救濟:職業災害認定。

    范淑婷指出,日本已經把躁鬱症、恐慌症、焦慮症、憂鬱症等等職場精神病納入職業病的認定範圍。台灣目前尚未開放,但勞委會已經在研擬當中。 但這當然是最不理想的狀況,畢竟身心受創後,付出代價的是自己。

    「向上管理的另一個層面,是管理自己的心態,」周淑媛表示,如果老闆強悍、得理不饒人、EQ低,但你跟著主管或組織能學習很多,就要試著管理自己的想法,念頭一轉,日子自然比較好過,工作也會更愉快。

    情緒管理有方法

    情緒來時,深呼吸,有意識地放鬆臉上肌肉,或著把注意力轉移到室內的某一點,讓自己冷卻。 當怒火、脾氣要發作,或眼淚要流下時,趁這些情緒尚未完全控制你之前,最好先說出來。

    如果眼淚已經流下來了,馬上把原因說出來,對自己和對方都會比較輕鬆。 如果情緒無法控制,就中斷一下,整理一下自己,再約下次談話時間,以便能客觀的把事情談完。然後你再告訴對方,為什麼你會忽然產生情緒。不需要因此自責或不好意思,因為人有情緒是正常的。

    2016/11/28

    近期熱門文章外掛 - WordPress Popular Posts 可以把文章第一張圖片當作縮圖

    側邊攔加入熱門文章的列表,表示大多數人都感興趣,會增加網友們對網站的點擊率;而且也能藉由熱門的文章,知道網友們較喜歡哪方面的內容,加強這方面文章的數量。

    WordPress本身並沒有提供熱門文章計數的功能,那麼可以來試一下「WordPress Popular Posts」這個外掛,它正是一套值得推薦的Wordpress熱門文章外掛。

    因為我只要近期熱門文章, 不要歷史總熱門文章

    這個外掛可以讓你選, 24小時內/1週內…所以很符合我的需求


    當然他的功能不只這樣,

    還可以顯示縮圖..自動下拉出設定欄,雖然是英文但不至於太艱深,就依照你想呈現的條件進行設定囉。設定完成後記得按下「儲存」


    重點是縮圖可以選擇文章第一張圖片當作縮圖, 很貼心!