Window基本命令學習(三)

2021-07-16 07:47:37 字數 4517 閱讀 5280

這個語法中,options用於設定文字匹配選項,source指定了文字**(可以是文字檔案、字串或者命令的輸出資訊),statement指定了在文字匹配時要執行的命令。source中的每行文字被命令shell當做乙個記錄處理,不同欄位由特定的字元分隔開(比如製表符或空格,預設情況下是空格)。通過替換技術,命令shell在執行時會使用變數的實際值來替代佔位符變數。舉個例子,比如下面乙個文字:

xiaodong wang engineer [email protected] luoyang

假如儲存在c:\introduce.txt裡面。可以看出,這段文字從內容上分別代表:

實際操作是,希望將它分開,則可以輸入這樣的指令碼程式:

rem ************************

rem script

:analysisfile.bat

rem creation

data

:2016-7-26

rem last

modified

:2016-7-26

rem author

:xiaodong

wang

rem email

:347916416

@qq.com

rem ************************

rem description

:analysis a file structure

rem and show the result

rem ************************

rem files

:stores output none

rem ************************

@echo off

for /f "tokens=1-5"

%%a in (c:\introduce.txt) do (

@echo name: %%a

%%b depart: %%c

email

:%%d adress: %%e)

則輸出為:name: xiaodong wang depart: engineer email: [email protected] adress: luoyang

命令指定要處理前五個字段,並且變數以%%a開始,則後面的字段分別是%%b、%%c...,一次類推。下表展示了所有["options"]可以使用的選項:

選項選項描述

例項例項描述

eol設定行尾注釋字元後的所有資料都被命令shell看出注釋

eol=#

將#設定為行尾注釋符

skip

設定檔案起始處跳過的行數

skip=5

通知命令shell跳過原始檔中的1到5行

delims

設定各欄位之間的分隔符,預設情況下為製表符或者空格

delims=,.;

指定逗號、句點、分號為分隔符

tokens

為每一源行設定令牌字段,如果以a或者a作為起始的迭代變數,則至多可以指定26個令牌。預設情況下,只對第乙個令牌進行檢查

tokens=1,3 tokens=2-5

第乙個例項將令牌字段設定為使用1與3,第二個例項將令牌字段設定為使用2、3、4、5

usebackq

規定可以在源指定符中使用引號:對檔名使用雙引號,對命令使用反引號,對字串使用單引號

usebackq

啟用該選項

例如,如果描述中需要用到命令,則可以使用usebackq,比如下面的語句:

for /f "tokens=1-5 usebackq" %a

in (`type "c:\introduce.txt"`) do (@echo

name: %a %b

depart: %c

email: %d

adress: %e)`

使用了命令,因此在裡面使用了反引號(`)和usebackq選項。

使用子程式

有時候,我們在程式中會用到子程式,這樣就會用到goto語句,比如下面的**:

if "%1"=="1" goto sub1

代表如果輸入的第乙個引數為1,則呼叫sub1的子程式,同時命令shell會跳轉到相應的子程式:sub1處,舉個例子:

rem ************************

rem script: testgoto.bat

rem creation data: 2016-7-26

rem last modified: 2016-7-26

rem author: xiaodong wang

rem email: [email protected]

rem ************************

rem description: test goto method

rem ************************

rem files: stores output none

rem ************************

@echo off

if"%1"=="" (echo error: no parameter passed with script!) & (goto

exit)

if"%1"=="1"

goto subroutine1

if"%1"=="2"

goto subroutine2

if"%1"=="3"

goto subroutine3

(echo error: parameter must 1or2

or3) & (goto

exit)

:subroutine1

echo in subroutine 1

goto

exit

:subroutine2

echo in subroutine 2

goto

exit

:subroutine3

echo in subroutine 3

goto

exit

:exit

echo exiting...

這個程式就代表如果沒有輸入第乙個引數,則直接跳到:exit處,否則根據引數的值來跳轉到對應的程式處。

還有乙個值得學習的命令call,代表呼叫其他指令碼程式,如:

if

"%1"=="1"

call script1

if"%1"=="2"

call script2

根據第乙個輸入的引數來呼叫對應的指令碼程式~

檢查系統資訊

通常在使用使用者計算機時,可能需要檢查一些基本的系統資訊。這時常用的命令有下面四個:

- [ ] date。可以顯示並設定當前系統的日期。

- [ ] time。可以顯示並設定當前系統的時間。

- [ ] whoami。顯示當前登入到系統的使用者名稱。

- [ ] where。使用某種搜尋模式搜尋檔案,並返回匹配結果。

前面三個命令自己嘗試一下就好,非常簡單。關鍵是第四個命令需要解釋一下:

預設情況下,where命令會在當前目錄以及環境變數path指定的路徑中進行搜尋。因此,只要在命令shell視窗中輸入where命令,其後跟隨要搜尋的可執行程式名,就可以快速地在當前路徑中搜尋該可執行程式。比如輸入:

where cmd.exe

上面命令的輸出結果為cmd.exe的全檔案路徑:

c:\windows\system32\cmd.exe

使用where命令還有一種常用方法是:

where /r basedir filename

/r代表從指定目錄(basedir)開始遞迴搜尋,包含所有子目錄。filename代表要搜尋檔案的全名或者部分名字,其中可以包括萬用字元。?匹配單個字元,*匹配多個字元。比如,data???.txt或者data*.*。比如下面命令:

-where /r c:\data*.txt

代表在c:\目錄及其子目錄下搜尋檔名以data開始的文字檔案。

-where /r c:\data*.*

代表搜尋檔名以data開始的所有型別檔案。

window 基本命令

window 基本命令 1.window r 開啟doc 視窗 2.window 基本命令 2.1.cls 清屏 2.2.cd change directory 改變目錄 cd 絕對路徑 帶碟符的 相對路徑。2.3.cd 切換上級目錄。盤中預設有乙個名字為.的資料夾。2.4.cd 當前目錄。切換目錄...

redis 基本命令(三)

一.鏈結命令 redis 命令用於在 redis 服務上執行操作。以下例項講解了如何啟動 redis 客戶端 1.啟動 redis 客戶端,開啟終端並輸入命令redis cli。該命令會連線本地的 redis 服務。redis cli redis 127.0.0.1 6379 redis 127.0...

Linux基本命令三

使用者管理 使用者賬戶 1.可以登入作業系統 2.實現訪問控制 不同的使用者許可權不同 組賬戶 方便對使用者管理 唯一表識 uid gid 系統賬戶 0 999 普通賬戶 1000 往上 useradd 建立使用者命令 useradd u 數字 使用者名稱 指定使用者uid useradd d 目錄...