2010年12月30日

使用 Wondows PowerShell 將兩個資料夾中,主檔名相同的檔案搬移到另外一個資料夾

假設資料夾 1 為 D:\doc,資料夾 2 為 D:\txt,其內分別儲存 .doc 與 .txt 檔,要將資料夾 1 中,主檔名與資料夾 2 主檔名相同的檔案搬移到另外一個資料夾(D:\newdoc)。

要如何使用 Wondows PowerShell 進行這樣操作呢?

例如:

資料夾 1(D:\doc)內有下列檔案:

  • a.doc
  • b.doc
  • c.doc
  • aa.doc
  • ab.doc
  • ac.doc

資料夾 2(D:\txt)內有下列檔案:

  • a.txt
  • aa.txt
  • bb.txt
  • cc.txt

資料夾 1 與資料夾 2 中,相同主檔名的有:

  • a
  • aa

所以要將 a.doc 與 aa.doc 搬移到新資料夾(D:\newdoc)。Windows PowerShell 程式碼如下:

# 宣告變數
$folderA = "D:\doc\"
$folderB = "D:\txt\"
$folderNew = "D:\newdoc\"

# 找出資料夾中的每個檔案
foreach ($fileA in Get-ChildItem $folderA)
{
    # 組出另一資料夾中的檔名
    # 方法 1
    $fileB = $folderB + $fileA.Name.Remove($fileA.Name.Length - $fileA.Extension.Length) + ".txt"
    # 方法 2,此法有缺點,萬一檔名中有數個 .doc 都會被換成 .txt
    #$fileB = $folderB + $fileA.Name.ToLower().Replace(".doc", ".txt")

    # 檢查檔案是否存在資料夾中
    If (Test-Path $fileB) {
        "搬移檔案: $fileA"
        $fileA.MoveTo($folderNew + $fileA.Name)
    }
}

2010年11月14日

修改 Windows 網路卡的自動公制設定

「公制」(或稱計量,Metric)是指派給網路卡的路由值,其用途為識別與使用路由有關的成本。影響成本的因素有:網路的頻寬(或稱速度,例如:10Mbps、100Mbps)、躍點計數(Hop Count)或網路延遲(Network Delay)…等。
從 Windows XP 之後,微軟就開始提供「自動公制」或稱「自動計量」的新功能。顧名思義,就是可以自動設定以網路頻寬為作為計算路由基準的公制。作業系統預設就會啟用自動公制的功能,當然您也可以手動修改設定。
比方說,電腦安裝兩張網路卡,所連接的網路頻寬都一樣,又都是位於同一個網段(亦即網路卡的預設閘道一樣),此時手動修改公制就很有用,因為可以讓公制數值較小的網路卡優先被使用
修改自動公制設定的操作步驟:
  1. 開啟「控制台」,連按兩下「網路連線」
    如果是 Windows Vista (含)之後的作業系統,請依序開啟「控制台」中的「網路和共用中心/變更介面卡設定」
  2. 在要修改的網路卡上,按下滑鼠右鍵,選擇 [內容]
  3. 按下「這個連線使用下列項目」中的「網際網路通訊協定 (TCP/IP)」「網際網路通訊協定第 4 版 (TCP/IPv4)」「網際網路通訊協定第 6 版 (TCP/IPv6)」,然後按下 [內容]
  4. 「一般」] 索引標籤中,按下「進階」
  5. [IP 設定] 索引標籤,清除「自動公制」「自動計量」核取方塊,然後在「介面公制」「介面計量」欄位中,輸入您要的公制。
    可填入的公制值為 1 9999
  6. 如果要修改預設閘道的「自動公制」「自動計量」,請按下位於「預設閘道」下的「編輯」按鈕,清除「公制」「計量」核取方塊,然後在「公制」「計量」欄位中,輸入您要的公制。
    可填入的公制值為 1 9999


由上述的操作說明,您可以瞭解到:每個閘道都可個別設定其預設閘道的公制,此舉可以讓您進一步控制區域路由使用的公制。例如,您可以讓自動公制功能設定指派給網路卡的路由,同時又手動設定指派給預設閘道的公制。

請特別注意: 如果在網路卡層級指定了公制,但又新增了閘道並設定自動公制功能,那麼該閘道則會沿用指派給該網路卡的公制。例如,如果您在網路卡層級指定公制為 1,然後新增閘道,並勾選閘道的自動公制核取方塊,該閘道也會被指派公制 1。

2010年11月13日

如何將 Snagit 的 Stamp(圖章)從一台電腦轉移到另外一台電腦(含下載圖章說明)

Snagit 這套抓圖軟體的一大特色就是原廠提供了許多的 Stamps(圖章),而且都是 .exe 的可執行檔,因此只要安裝完這些圖章檔之後,即可馬上使用他們。

下載圖章檔的操作方式為:

  1. 按下「Draw」功能表,接著按下「Drawing Tools」功能區中的「Stamp」圖示。
    按下 Stamp 圖示
  2. 按下「Download more…」項目。
    按下 Download more…
  3. 找到「Stamps」區塊,裡面就有 3 種分類圖章可供下載:
    • Accent
    • Clip Art
    • Number And Letter
    數種 Stamps
  4. 以下圖為例,是按下超連結「Accent」「Accent  Samples」之後,下載「Accents: Proofreader Mark Stamps」的畫面:
    下載 Stamps

雖然圖章檔已經是 .exe 檔,但每當新電腦安裝好 Snagit,都要用滑鼠雙擊 .exe 的圖章檔,進行安裝操作。若需要安裝 10 個圖章檔,就要重複操作 10 次上述的動作,難道沒有更簡單的方法嗎?

有的!圖章檔安裝完之後,在 C:\Program Files\TechSmith\Snagit 10\Stamps(32 位元作業系統)或 C:\Program Files (x86)\TechSmith\Snagit 10\Stamps(64 位元作業系統)會有許多子目錄,這些子目錄就是我們從步驟 2. 所看到的圖章分類名稱。

因此要將 Snagit 的圖章從一台電腦轉移到另外一台電腦,就是把 Stamps 下的子目錄複製到另外一台電腦相對應的目錄即可。

不過,如果您有加入自己的圖章,在預設狀態下,自訂的圖章會儲存在 C:\Users\<使用者名稱>\Documents\Snagit StampsC:\Documents and Settings\<使用者名稱>\My Documents\Snagit Stamps。建議您在 C:\Program Files\TechSmith\Snagit 10\Stamps(32 位元作業系統)或 C:\Program Files (x86)\TechSmith\Snagit 10\Stamps(64 位元作業系統)之下,建立新的目錄,然後把自訂圖章的檔案搬移到剛建立的目錄。

提醒您,如果作業系統是 Windows Vista (含)之後,請記得以系統管理員身分執行檔案總管進行檔案的複製與搬移操作。

2010年11月6日

善用指令判斷 Windows 7 與 Server 2008 R2 作業系統目前的版本與可升級的版本為何

Windows 7 與 Server 2008 R2 內建一個部署映像服務與管理的工具程式:DISM.exe,雖然這個工具可用於 Windows 7、Windows Vista SP1 及其更新之版本、Windows Server 2008 與 Windows Server 2008 R2 作業系統中。不過,該工具所有完整的功能,只限用於 Windows 7 與 Windows Server 2008 R2 上

透過 DISM 搭配適當的參數,可以判斷出目前的 Windows 7、Window Server 2008 R2 作業系統是哪一種版本:

DISM /online /Get-CurrentEdition
使用如下的指令,可以知道目前的版本可升級成哪些版本:
DISM /online /Get-TargetEditions

▼ 在 Windows 7 進行判斷

▼ 在 Windows Server 2008 R2 Server Core 進行判斷

附註:

2010年11月3日

使用 Windows PowerShell 將資料匯出成 .html 檔案(含安裝 SQLPSX 模組教學)

CodePlex 有個 SQL Server Powershell Extensions(簡稱 SQLPSX)專案,裡面提供數個資料庫(不單支援 Microsoft SQL Server,連 Oracle 都支援,但前提是您的電腦必須有 Oracle 相關的組件才行)的模組(Module),其中有個 Get-SqlData 方法可以執行 T-SQL 查詢,並回傳一個 DataRow 物件。

由於回傳的是 DataRow 物件,所以可以透過 Windows PowerShell 內建的 ConvertTo-Html 指令(Cmdlet),將 DataRow 物件轉換成 HTML 格式,接著透過導向方式,輸出成 .html 檔即可在瀏覽器中顯示。

前置作業

安裝 SQLPSX 的方式很簡單,但在安裝之前,您的電腦必須已經安裝下列元件並做好設定:

安裝 SQLPSX 模組

下載內含安裝程式的壓縮檔:SQLPSX_V2_Install.zip,將其解開,然後依照作業系統的位元是 3264 的不同,執行相對應的安裝程式 SQLPSX_Install_32.exe、SQLPSX_Install_64.exe,然後依照畫面指示進行操作。

▼ 開始進行安裝
開始進行安裝

▼ 指定壓縮檔
指定壓縮檔

▼ 安裝完畢,最下方的狀態列會顯示:SQLPSX - Installation completed
安裝完畢

開啟 Windows PowerShell,輸入下面的指令,以便建立目前這個使用者的 Windows PowerShell 設定檔:

notepad $Profile

此時會開啟記事本並出現找不到檔案的訊息,按下「是」按鈕,開始編輯設定檔。請將下面的內容複製下來,然後貼到記事本,接著存檔(下面的路徑適用於 Windows Vista 之後的作業系統,若您的作業系統為 Vista 之前,請自行將 Documents 調整成 My Documents 或實際的位置與名稱):

Import-Module $Home\Documents\WindowsPowerShell\Modules\SQLPSX\SQLPSX.psm1

請注意:
$Home
變數是指目前使用者的主目錄 。

關閉 Windows PowerShell,然後再開啟它,此時應該會看到如下的畫面,即表示成功安裝 SQLPSX 模組了。開懷大笑

▼ 安裝 SQLPSX 模組成功了
成功安裝 SQLPSX 模組

使用 SQLPSX 模組

在 Windows PowerSehll 輸入如下的指令:

Get-SqlData ".\SqlExpress" 北風貿易 "SELECT * FROM 章立民研究室" | ConvertTo-Html -Property 員工編號, 身份證字號, 姓名 -Title "員工資料表" > d:\章立民研究室.html

上面的指令會從名稱為 SqlExpress 的 SQL Server Express 執行個體中的北風貿易資料庫,找出章立民研究室資料表中的所有資料,接著將輸出結果轉換成 HTML 格式,且只輸出 3 個欄位,並將 .html 的 Title 屬性設定成 員工資料表,然後輸出到 d:\章立民研究室.html

▼ 使用 Windows PowerShell 將資料匯出成 .html 檔案
使用 Windows PowerShell 將資料匯出成 .html 檔案

▼ 檢視 .html 原始碼
檢視 .html 原始碼

  1. 其實是可以在 T-SQL 語法中的 SELECT 子句指定要哪些欄位,我只是想凸顯出 PowerShell ConvertTo-Html 有個 Property 屬性也可指定要顯示哪些欄位。
  2. 至於其他 SQLPSX 模組詳細的指令說明,可在此處找到。