Day7 潛藏在你心中的指令即將覺醒


大家好,今天過得還好嗎?
相信看完Day6的你已經會一些簡單的"條件處理、標籤的使用方法和一些基本的處理邏輯"了
在最後一天我會介紹一些其他你能在Windows上用批次檔做的事情
(包括但不限於我說的部份)

俗話說的好,懶是一種美德
在能夠完成同樣任務的請況下,看起來比較懶的那方總是能用更快速聰明省力的方式把事情完成

如果你曾經重灌過電腦的話
你可能會想問"有沒有一個可以讓我更快速調好所有常用設定的方法?"
也就和前面說得一樣,批次檔就是幫你批批次次完成所需要的工作的腳本
使用批次檔能夠快速地調整Windows的各個設定

但是問題來了,我要去哪找Windows的設定檔呢?
塌搭,讓我為您隆重介紹"登陸編輯程式(regedit)"
登陸編輯程式就是一個可以讓你去讀寫電腦登錄檔的程式
而登錄檔就像是一個清單,上面記錄著各種電腦的設定
以肥宅的我來比喻的話,就像是告訴自己一個星期內只能喝一次含糖飲料
然後如果遇到買東西的場合的時候就會去檢查那杯想買的飲料上有沒有含糖
(因為我腦袋裡的設定檔裡有一項"一個星期內只能喝一次含糖飲料"的規定)

好,回歸正題
通常我們進到regedit後會看到五個像是資料夾的東西
它們的意義如下:
(資料來源:wiki)

HKEY_CLASSES_ROOT
儲存Windows可辨識的檔案類型的詳細列表,以及相關聯的程式
翻譯蒟蒻:通常我們不會動到這東西

HKEY_CURRENT_USER
儲存目前使用者設定的資訊
翻譯蒟蒻:通常和當前使用者相關的設定檔會存在這裡
(e.g.(現在的使用者)要不要開啟黑暗模式、桌布長怎樣之類的)

HKEY_LOCAL_MACHINE
包括安裝在電腦上的硬體和軟體的資訊
翻譯蒟蒻:通常是會在整台電腦生效的設定
(e.g.萬惡的Windows更新) (你總不會換個使用者就可以不被更新吧XD)

HKEY_USERS
包含使用電腦的使用者的資訊
(不負責)翻譯蒟蒻:通常我們不會動到這東西

HKEY_CURRENT_CONFIG
這個分支包含電腦目前的硬體組態資訊
翻譯蒟蒻:通常我們不會動到這東西

以我自己的情況來說大部分都是改這兩個位址的設定
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE

以下實際例子來解釋
好比說如果我希望右下角工作列(Taskbar)的時鐘會顯示秒數的話
我會需要去改在"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"下新增一個名稱叫做"ShowSecondsInSystemClock"(DWORD 32位元)的值然後把數值處從"0"改成"1"

而修改這個數值的動作在批次檔裡可以寫成這樣

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowSecondsInSystemClock" /t reg_DWORD /d "1" /f

這個新增登錄檔的語法解釋:
reg add "位置" /v "值的名稱" /t "值的類型" /d "值的內容" f表示不需提示,強制覆寫現有的登錄項目

貼心提醒:
請確定在修改任何設定以前清楚瞭解自己正在做的事情
不然您的電腦說不定會突然自己燒掉
當然這只是玩笑話
不過請注意您的電腦可能真的會居居

Ok,之後假如你用過登陸編輯程式改過系統設定的話
你會很驚訝地發現...基本上大概85~95%的電腦設定都能用它改了

那如果...有程式發瘋狂吃我資源呢?
一般來說你會用到"taskkill"和"net stop"這兩個指令
taskkill是用來殺task
net stop則是用來停止服務用的
分別是對應工作管理員的這兩頁


基本上在詳細資料裡的東西都能用"taskkill"殺掉
而服務裡的東西都能用"net stop"給停掉
(不過它會不會自己再另外起來又是另外一件事情了)

而另外一個我想提的很實用的東西是自從Windows 8後出現的Powershell
它的功能比起CMD真的強上很多
但...它也不是沒有缺點
在預設的情況下,Powershell的腳本(.ps1)並不能在電腦上執行
(得要去改Powershell的腳本執行政策才行)
這種情況下我個人有兩種解法(雖然說根本上是同一種)
1.用batch丟執行政策給Powershell然後跑.ps1腳本
(好處是所有和Powershell相關的東西可以放在.ps1裡面,管理起來會比較方便)
指令看起來會像這樣:

rem 用批次檔呼叫Powershell執行腳本
powershell.exe -ExecutionPolicy Bypass -File "C:\Program Files\BRAINBURST\res\DIFDIR.ps1"

2.用batch呼叫Powershell執行其指令
(好處是用這方法基本上不會忘記需要設定執行政策,而且可以全部包在一個批次檔裡)
指令看起來會像這樣:

rem 用批次檔呼叫Powershell移除Candy Crush
powershell -c "Get-AppxPackage *Candy* | remove-AppxPackage"

而在最後,我想稍微回歸一下Linux的部分
(這是我最近在搞的一個小東西)
如果你是和我一樣剛切到Linux,你可能會和我一樣覺得Windows的指令真是又臭又長
(不過cls除外)
那...有沒有方法可以讓我們在Windows上一樣使用Linux的指令呢?
答案是...有的!

我的作法是自己捏一個對應的批次檔,然後把我習慣放這東西的路徑加進PATH環境變數裡
而我在這裡舉幾個例子
cat的實作:

@echo off
type %1

使用@echo off才能有感覺像原生指令一樣的畫面,不然會裡面每行都秀出來
而這種呼叫方式關閉echo只會對cat批次檔內的指令生效
(白話文:你的cmd還是可以像平常一樣用而不會一堆東西消失)
type是Windows下查看純文字檔的指令而%1表示丟給外面傳進來的第一個參數

好了,7天寫下來發現我的內容量真的是指數性成長呢(苦笑)
希望如此激增的資訊量不要讓讀者們吸收不良啊啊啊 (((自己作死
最後也謝謝一路看下來的各位讀者們啦(如果有的話)
那麼我們有緣再見啦

希望做出面向0電腦基礎也能理解的文章~






Related Posts

Day 1 - MongoDB 基礎

Day 1 - MongoDB 基礎

Day04 - SignalR 簡介

Day04 - SignalR 簡介

MTR04_0714

MTR04_0714

搭配Windows工作排程, 讓Python自動執行

搭配Windows工作排程, 讓Python自動執行

漫談傳輸介面-PCI

漫談傳輸介面-PCI

[14] 值 - 數字

[14] 值 - 數字



Comments