作業系統備忘分類文章 顯示方式:簡文 | 列表

2008年10月21日

如何用批次指令取得上個月的月份

同事問了個問題:他的系統每天會建一個以月份為名的資料夾(如C:\Data\200809、C:\Data\200810等),裡面會放該月每天產生的系統檔案,如何用批次檔把上個月的每個資料夾裡的檔案都刪掉?如果寫支程式(如PowerShell)來做是很簡單,不過卻限制必須使用批次檔來做,這就有點難度了,因為Windows的批次指令實在陽春得可以。

...繼續閱讀

Posted by emisjerry at 樂多Roodo!22:23回應(1)引用(0)

2008年07月5日

IE7突然出現「存放裝置空間不足,無法完成此操作」錯誤

最近某天早上剛開機用IE 7(版本:7.0.6001.18000)瀏覽網頁系統時,原本都能正常運作的網頁突然出現「存放裝置空間不足,無法完成此操 作」的錯誤訊息,甚至用功能表裡的【關於Internet Explorer】也會出現相同的錯誤:

IE-error1

我的硬碟空間充足,TEMP所指的資料夾空間也夠,查了許久仍無法解決。由Visual Studio裡找到錯誤是發生在jQuery.js裡的navigator.userAgent,只 要一執行到這行就會出現錯誤:

IE-error2

後來先把這行指令修改如下,讓IE能正常執行:

var userAgent = "mozilla/4.0 (compatible;MSIE 6.0)"; //navigator.userAgent.toLowerCase();

今天仔細搜尋了網路上的資訊,找不到任何類似的問題,難道是我的IE突變嗎?後來是使用了下列步驟還原才又恢復正常:功能表【工具】→網際網路選項→〔進 階頁籤〕,按最下方的〔重設〕按鈕。

IE-error3

##

Posted by emisjerry at 樂多Roodo!0:37

2008年06月24日

用多顆CPU加快Vista開機速度

LifeHacker.com的這篇Make Vista Use Multiple Cores to Speed Boot Time介紹了讓Windows Vista加快開機速度的方法,簡單說就是用msconfig把開機時的CPU數加大,我試了一下感覺似乎有加快,有興趣者不妨一試。較詳盡的操作畫面可參考 Quick Way to Boost Vista Boot Time

##

Posted by emisjerry at 樂多Roodo!22:25

2008年05月10日

命令提示字元的完美替身:PowerCmd與Console 2.0

PowerCmd對於喜歡或習慣文字模式操作系統的使用者而言,在Windows的環境裡選擇是有限 的,使用得最多的應該 還是內建的cmd.exe吧?其他的選擇有下列幾 種:
  • JP Software的4DOS、4NT、Take Command
    • 4DOS已經變成免費,適用於Windows 95/98/ME
    • 4NT已整合到Take Command裡,因而不在JP Software產品線裡了
    • 購買費用是美金95.95元,有提供30天試用版
  • PowerCmd: 美金29.95元,有30天試用版
  • Console:Open source,目前版本為2.0,稍經設定便能在中文環境裡使用
由我這篇寫於 2002年的文章可以知道我使用了4DOS、Take Command-32有一段時間,後來因為授權費用和Windows 升級的關係,又重新使用強化過的cmd.exe+doskey.exe。每次執行不同的操作時,就開啟了多個命令提示字元視窗,不僅佔據一些螢幕空間, 也影響尋找持定視窗的速度。而PowerCmd和Console正好是多頁籤的操作介面,恰好解決了多視窗的困擾。

PowerCmd簡介

PowerCmd安裝後就能正常的在中文環境裡運作。按下Ctrl+N就能開啟新的DOS頁籤,為了識別不同頁籤,可以用title指令來變更頁籤的標題(但這個功能 我都試不成功,不知那裡弄錯...)。PowerCmd選取與Copy/Paste的操作方法也和cmd.exe開啟快速編輯模式後用右鍵操作的方法不 同:用左鍵選取文字,再往外拖放,則選取文字立即出現在命令列。

PowerCmd的竹自動完成會將符合的候選檔案顯示在一個彈出式視窗上,這樣能更簡單的選用要使用的檔案。

試用時有遇到幾個問題,當使用不同的頁籤Layout時,游標的焦點有時會跑掉,變得無法操作,因此建議用預設的單畫面模式較好。

還是使用免費的Console吧

Console2 PowerCmd雖然功能較多,似乎也較穩定,但看在Console是免費且開源的情形下,還是決定主要使用Console。Console安裝後必須再 做設定,設定的細節請參考Console2 終於可以顯示中文了這 篇文章,也可直接下載我做好的Registry檔案,執行後就能正常使用中文字型了。

接著再參考Consolas in Windows Console下載美觀的Consolas字型,在【Edit→Settings...】裡指定使用 Consolas,雖然不影響中文字型但英文則變得好看多了。

下載連結


Posted by emisjerry at 樂多Roodo!0:48

2008年04月27日

[Vista] 把桌面行事曆Rainlendar鎖定在桌面上

Rainlendar 2.0桌面行事曆Rainlendar 2.0是很常見的一個行事曆工具,我一般是把它鎖定在桌面上,以達到最佳的提醒效果。沒想到在Windows Vista裡鎖定桌面的功能竟然失效!試了半天後才發覺在Rainlendar的FAQ裡早有了解決方法:

由Rainlendar的System Tray圖示的右鍵功能表,依下列步驟設定:

  1. 選項→進階
  2. 移動到第16項:透明度類型
  3. 把值由【原生(Native)】改成【複製(Copy)】
  4. 按〔確定〕
這樣設定後就正常了。

##

Posted by emisjerry at 樂多Roodo!22:33

2008年04月20日

[Windows] 去除環境變數DATE與TIME內的空白

有些處理我們會使用批次檔來寫,例如每天夜間的排程備份或輸出執行結果到Log檔,當這些輸出檔名必須帶有日期與時間時,經常都會有些不方便的地方 (如果你不清楚環境變數的運用的話,請先參考[Windows] 環境變數的擴充功能這篇的介紹)。 舉例如下:

cd  \Project\MyProject1
rem %DATE%傳回:2008/04/20,DATE1=0420,TIME1=HHMM
set DATE1=%DATE:~5,2%%DATE:~8,2%
set TIME1=%TIME:~0,2%%TIME:~3,2%
svn update  > UPDATE_%DATE1%_%TIME1%.log

以上指令看似正常,但當時間在早上0點到9點之間時,%TIME%傳回的竟然是  9:01:09.16-開頭第一個字元是空白,造成組成的檔名異常。另外,日期與時間的格式會因【控制台 →時鐘、語言和區域→地區與語言選項】裡的格式而有不同,為了一勞永逸地解決夾有空白問題,可以改寫如下:

set DATE1=%DATE:~5,2%%DATE:~8,2%
set DATE1=%DATE1: =0%

用「冒號 空白 等於 0」 就能把變數裡的空白換成 0而不致有問題了。

##

Posted by emisjerry at 樂多Roodo!20:41

2008年04月19日

[Vista] 設定環境變數SET命令的擴充

Windows Vista的SET命令也有了擴充,詳細說明可用 SET /? 檢視。我歸納成下列 5 點:
  1. 只執行SET會列出所有的環境變數,若用 SET P 則列出所有以P開頭的所有變數
  2. SET /A 可以做數值計算(A=Arithmetic)。咦,為什麼不用小算盤?況且現在的小算盤也有標準型和工程型兩種,我能想到的一個應用是在進制混合的狀況下 使用,例如下列是16進位(0x開頭)加10進位再加8進位(0開頭的3位數):
    C:\>set /A answer=0xff+100+012
    365
  3. SET /P 會先顯示提示文字,再把使用者輸入的值存入變數(P=Prompt),例如:
    C:\>
    C:\>set /P answer=請輸入:
    請輸入:12345

    C:\>set answer
    answer=12345
  4. 變數的子字串替換:%變數名: 原字串=新字串%
    C:\Users\jerry\Documents>set FILE=%CD%\MyFile.html

    C:\Users\jerry\Documents>set FILE
    FILE=C:\Users\jerry\Documents\MyFile.html

    C:\Users\jerry\Documents>set FILE=%FILE:My=Your% && set FILE
    FILE=C:\Users\jerry\Documents\YourFile.html
  5. 取子字串:%PATH:~10,5%,這個擴充原本就有 了
##

Posted by emisjerry at 樂多Roodo!15:49

2008年04月17日

[Vista] 解決SP1更新問題

昨天看到了Windows Vista SP1 All Language Standalone 版公佈的消息後就下載回來更新,沒想到執行沒幾個步驟就彈出錯誤對 話窗,試了幾次,也重新執行Windows Update把所有的重要的更新都執行了,還是出現錯誤碼0x80070070, 最後用這個錯誤碼Google了一下,看起來是暫存檔的問題,才聯想到可能是環境變數TEMPTMP的設定造成的。

因為Vista 32位元只能使用到3GB的記憶體,而我的ThinkPad X61配有4GB,因此把作業系統用不到的1GB切成成RAM Disk(我使用了E:),再把環境變數TEMP與TMP設定到 E:\TEMP,重新把變數改到 C:\TEMP 後就能正常更新了。

更新後已經使用一天,一切正常。

##

Posted by emisjerry at 樂多Roodo!21:31

2008年04月13日

[Vista] 小試檔案總管的搜尋工具

Vista searchWindows Vista把桌面搜尋功能整合到系統裡,除了開始功能表的開始搜尋框可以達成類似Launchy似 的輸入部份字串找出符合檔名的檔案外,最方便的應該是在檔案總管理提供的搜尋功能了,以下是我彙總的一些使用案例。

1. 我們可以在搜尋框裡輸入萬用字元來過濾符合樣式的檔案,例如輸入 *.doc 列出Word檔案,*.txt 列出文字檔案。只要搜尋框開始搜尋後,視窗自動增加搜尋相關的功能表項目:【儲存搜尋】與【搜尋工具】。

如 果要加速搜尋速度則必須對常用資料夾建立索引,若搜尋的資料夾沒有建立過索引的話,會顯示【搜尋下列未編製索引的位置可能較慢: 】,在文字上按一下就能將目前資料夾加入索引對象,或用【修改索引位置】或功能表搜尋工具維護索引資料夾。

Vista build index

2. 列出多種類型檔案:使用大寫的OR,如:java*.txt OR auto*.html
其他的組合有AND、 NOT

3. 指定明確的搜尋欄位:輸入格式是「搜尋欄位+半形冒號+ [大於小於等於之類的比對符號]+搜尋字串」,如:名 稱:faq

檔名清單的表頭欄位都能拿來做為搜尋欄位,如常見的名稱、修改日期、大小 等等,只要在表頭欄位按右鍵就能顯示出可供顯示與使用的欄位。

使用範例:
  • 大 小:>100K
  • 修改日期:>=2008/04/01
  • 也 能混用:date:>2008/04/01 AND 類型:PNG
如果覺得輸入中文有些麻煩 的話,也可以直接輸入英文,如:
  • size:>10M
  • modified:lastweek
詳 細的英文搜尋欄位可以參考Windows Vista and Windows Desktop Search 3.01 Advanced Query Syntax一文。

覺得記指令很討厭?只要在功 能表【搜尋工具→搜尋窗格→按右側進階搜尋按鈕】輸入條件再按〔搜尋〕就能組合搜尋條件,搜尋框裡也會同步顯示條件 的語法,也能做為學習提示之用。

Vista Search Advanced

參考:
##

Posted by emisjerry at 樂多Roodo!22:49

2008年04月12日

[Vista] 使用iCACLs.exe快速變更檔案的存取權限

由於使用檔案總管變更記事本的安全性步驟繁複,因而查詢到了一篇Replacing notepad.exe in Vista 使用takeown.exeicacls.exe直 接使用DOS命令變更內建檔案的使用權限設定。TakeOwn很好理解,就是取得所有權,但iCACLs就較困難些了。iCACLs在以前的 Windows版本裡相對應的指令名稱是CACLs:Change Access Control Lists 的縮寫(開頭的C也有寫成Control的);而在Windows Server 2003 SP2與Windows Vista裡又出現加強版(Improved) 的CACLs,即 ICACLs.exe。以下我們就使用iCACLs.exe和C:\Windows\hh.exe來實驗如何用指令變更存取權限設定。

我們由檔案總管右鍵功能表開啟hh.exe的內容視窗→安全性頁籤→〔進階〕檢視hh.exe的使用權限,再以指令 icacls  hh.exe 檢 視其輸出,二者做個比對就能比較了解iCACLs顯示的縮寫含義了。

Vista Security
C:\Windows>icacls hh.exe
hh.exe NT SERVICE\TrustedInstaller:(F)
       BUILTIN\Administrators:(RX)
       NT AUTHORITY\SYSTEM:(RX)
       BUILTIN\Users:(RX)

已 順利處理 1 個檔案; 0 個檔案處理失敗

由對照可知:
  • (F)是完全控制(Full Control)
  • (RX)是讀取與執行(Read and Execute)
內建檔案只有TrustedInstaller具有完全控制的權限,透過iCACLs的 /grant 使用者:(F) 參數可以把完全控制權限授權給指定的使用者,首先用TakeOwn命令把hh.exe的擁有者變成登入的使用者,再變更存取權限:

C:\Windows>takeown /F hh.exe

成功: 檔案 (或資料夾): "C:\Windows\hh.exe" 目前已經由使用者 "JERRYTP\jerry" 擁有。

C:\Windows>icacls hh.exe /grant jerry:(F)
已處理的檔案: hh.exe
已順利處理 1 個檔案; 0 個檔案處理失敗

C:\Windows>icacls hh.exe
hh.exe JERRYTP\jerry:(F)
       NT SERVICE\TrustedInstaller:(F)
       BUILTIN\Administrators:(RX)
       NT AUTHORITY\SYSTEM:(RX)
       BUILTIN\Users:(RX)

已順利處理 1 個檔案; 0 個檔案處理失敗

由上面的紅色字體可以看到使用者jerry針對hh.exe已具有完全控制的權限了,往後不管是對 hh.exe 做改名、覆蓋或刪除操作才能成功。

iCACLs.exe命令頗為複雜,有時間再來仔細研究清楚。

另外,由於Google到的資料以英文居多,想讓DOS視窗的字碼頁由950(Traditional Chinese Big5)變成437(United States)應如何操作呢?

只要用debug.exe就 可以了。當debug.exe的減號提示符號出現後按 q 和 Enter回到DOS後,其編碼就變成437了。

##



Posted by emisjerry at 樂多Roodo!21:04
 [1]  [2]  [3]  [4]  [5]  [最終頁]