命令提示字元--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


<<:  Day22 X Web Workers

>>:  Day 22 - 实战演练 — Portal 系列

ASP.NET MVC 从入门到放弃(Day21)-MVC查询资料介绍

接下来讲讲查询 部分... Controller public ActionResult Index...

用订便当讲解订定题目的用途 | ML#Day12

我们做一个题目,基本上简单可分成两种用途: 了解关系 预测未来 故事例子 假设工作日常之中,我负责帮...

Day20 CSS预处理器是什麽?

CSS preprocessor(预处理器)是什麽? CSS 预处理器是个能透过使用预处理器语法,...

TypeScript 能手养成之旅 Day 3 判断资料型别

前言 今天正式进入 TypeScript 内容及使用,我们首先会接触的就是 型别系统 。 型别系统设...

[Day13]C# 鸡础观念- 来个轮回吧~foreach回圈

我们曾经认识过for, 後来也遇到While, 如今又出现一个foreach foreach回圈 f...