iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Software Development

妄想對自己的Windows優化兼Debug的工程師很正常吧系列 第 28

命令提示字元--CMD那麼好用你不學一下嗎?

這是算是一個被我忽略的工具,賽程中時不時提起,直到鐵人賽快結束我才想起來,這項工具也是該介紹的,他就是所謂的shell(殼層),指的是「為使用者提供使用者介面」的軟體,通常是命令列介面的解析器,大致上就是使用者跟作業系統交互的一個軟體,在Windows內建的Shell中,圖形化介面(GUI)的我們稱做檔案總管,命令列介面(CLI)的我們稱命令提示字元(CMD),但Window自家其實還開發出一個比CMD更優化的CLI,叫做powerShell,今天我們主要介紹CMD,希望讓大家都可以有操作命令列介面的基礎常識。


前言

先前我們提的內建程式大部分都屬於Microsoft Management Console,是提供副檔名為.msc的管理程式運行的平台,在開始功能表會被歸類到Windows系統管理工具的那一群,基本上都在%SystemRoot%\system32\下可以找到,cmd.exe也在這裡,powershell.exe則位在%SystemRoot%\System32\WindowsPowerShell\v1.0下,想對Windows做奇怪的事,或者對你身邊的朋友炫技(這裡指的是非資訊科系的朋友,否則人外有人天外有天,我們總會遇到被反將一軍的時候),就可以使出這兩支程式來操作作業系統吧,尤其自從2015年powerShell隨Windows安裝進系統後,微軟就開始推行這個命令列工具,還提供許多教學資源,對想操作Windows的各位更是一項利器,這個我們就明天再介紹啦。


CMD

命令提示字元(Command Prompt)可以運行所謂的Windows commands(Windows命令),是用”字元”對電腦下”命令”讓電腦回答”提示”的意義,他可以一行行指令(Command-line)去執行,也可以寫成一個指令集腳本達到自動化的功能,又因為是Windows很古老的內建通用命令列工具,所以相容性很好,寫法也很簡單,指令本身也不分大小寫,開啟他後首先要學的就是cd指令。


cd指令

cd 指令名稱來自(current directory),他是轉移目錄的一項功能,就像我們在檔案總管一樣,他有可以切換資料夾的能力。

cd [/d] [<drive>:][<path>]
cd [..]
chdir [/d] [<drive>:][<path>]
chdir [..]

Imgur
這是官方網站上的解釋,來帶大家看看,如果不懂指令本身,在指令後方加上\?也會出現說明而且還是中文的。

這裡最常最簡單的用法就是cd <path>,path可以指定要轉移的絕對路徑或者相對路徑,執行後會切換當前目錄,下面就是由C:\切換到C:\Windows,使用絕對路徑的方式,通常我們接參數最好加入雙引號以免被指令讀取錯誤,誤會成命令本身的部分。
Imgur

想返回上層目錄使用cd ..
Imgur

相對路徑的部分,.\代表的是當前目錄,..代表上層目錄的意思,可以用在相對路徑裡直接代入,像下圖第一個指令就是”轉移到當前目錄下的System32資料夾”,第二行指令的意思就是”轉移到上層目錄的上層目錄(到這就是C槽)下的Program Files資料夾”。
Imgur


dir指令

Directory的意思,用來顯示目錄的文件和子目錄的列表,也就是查看現在這個資料夾下有哪些檔案跟資料夾,先前在介紹檔案權限的文章中,有使用dir /a/q這個指令,其中/a代表顯示所有資料夾包含隱藏檔和系統檔通通顯示出來,/q會顯示文件所有權的資料。

dir [<drive>:][<path>][<filename>] [...] [/p] [/q] [/w] [/d] [/a[[:]<attributes>]][/o[[:]<sortorder>]] [/t[[:]<timefield>]] [/s] [/b] [/l] [/n] [/x] [/c] [/4] [/r]

Imgur

以上就是CMD最最基礎的檔案總管的功能,就是所謂Shell可以做到的查看系統的功能,然而CMD還有很多各式各樣的指令可以跟作業系統互動,下面我們用BAT腳本來邊做邊介紹。


.BAT批次檔腳本

命令提示字元的指令除了上面的查詢,還有很多功能,像是之前提過的REG指令等等,我們可以蒐集這些命令變成一連串的腳本讓系統由上到下讀取執行,變成一支小程式,最簡單的方法是打開記事本把指令一行行貼上去,再用ANSI/BIG5編碼存檔成XXX.bat就會變成Windows批次檔案了,雙擊兩下就可以直接執行,以批次完成指定的工作,稱為批次(Batch file)檔,或者也可以命名為XXX.cmd,他是在Windows NT後一樣可視為Windows批次檔執行的副檔名,通常我們會有個目標希望Windows照著指令跑,就會製作這個檔案。

那要決定做什麼功能呢?臨時想不到什麼需求,這裡寫最基礎的,如果我要開始辦公,需要一次開啟多個分頁,我們可以像這樣寫出一個bat檔達到一鍵開啟的目的~

:: 我是註解,後面就不多說了
START chrome.EXE --incognito "https://ithelp.ithome.com.tw/users/20140925"
:: 以chrome無痕視窗開啟我的it邦幫忙網頁
START chrome.EXE --incognito "https://www.facebook.com/"
:: 以chrome無痕視窗開啟Facebook網頁
START chrome.EXE --incognito "https://drive.google.com/drive/my-drive"
:: 以chrome無痕視窗開啟google雲端硬碟
START chrome.EXE --incognito "https://translate.google.com.tw/"
:: 以chrome無痕視窗開啟google翻譯
%localappdata%\LINE\bin\LineLauncher.exe
:: 開啟Line(直接指定exe執行檔開啟)

這裡的START指令是開始一個工作的意思,後面要開啟的程式理論上需要加上他的絕對路徑,或是程式剛好在當前目錄下,或者環境變數中的目錄下可以找到,但是chrome.EXE在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths中有指出他的路徑(path),所以系統也找的到可以直接開啟,附加--incognito選項可以用無痕視窗開啟,最後接網址參數打開分頁。
Imgur

而Line在登錄檔沒有指示出path,不過我們也能直接用絕對路徑指向.exe這類執行檔也可以開啟應用程式,這時候%localappdata%這種位置變數就很重要了,他讓這支程式可以隨處使用,不會因為中間的電腦使用者名稱不同還要改腳本才能用。

以上就我們就做到了以一個.bat檔,雙擊可以用chrome開啟四個指定分頁,並同時打開line的小小自動化程式,他能做到的還有更多,這裡只有簡單舉例一個用法,最直接的想法是當你有想做到什麼功能的時候,直接google拼出你獨一無二的腳本才是這個工具最實用的地方,不過這也是一支老程式,難免有些功能做不來,這時候號稱更強大的powershell就這樣出現了,我們下篇就來一探究竟~

Imgur

參考資料:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cd
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/dir
https://ithelp.ithome.com.tw/questions/10007063
https://lnpcd.blogspot.com/2012/08/08.html
https://www.uj5u.com/qiye/179781.html


上一篇
效能監視器--Windows的隱藏監控器
下一篇
PowerShell--除了CMD你還可以用他追求你想要的Windows
系列文
妄想對自己的Windows優化兼Debug的工程師很正常吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jafarwu
iT邦新手 4 級 ‧ 2021-10-07 18:12:32

誰可以把小恐龍玩那麼久啦XD會玩到睡著吧/images/emoticon/emoticon11.gif

生日快樂~~~~C8763/images/emoticon/emoticon53.gif/images/emoticon/emoticon31.gif

Zero皇 iT邦研究生 3 級 ‧ 2021-10-08 08:03:03 檢舉

大概是鍵盤會先物理性損壞,這樣也算一種病毒(?
謝謝啦~~~ /images/emoticon/emoticon01.gif

我要留言

立即登入留言