392
中電雲集
批處理各符號的功能
批處理各符號的功能:
1.
echo有兩個狀態一個是on 一個是off默認的是on 它的功能是顯示當前文件的路徑,如果不寫on 或者是off的時候,默認情況下
是打開的即顯當前文件的路徑,加上off後,所有路徑都不顯示,但是echo off這行還能顯出來,要讓這行也消失的話就在它們前麵
加一個@即@echo off,另外echo命令的另一種用法,可以直接編輯文本文件,例如:
echo netstat -an >a.bat結晶果是在當前目錄下生成一個a.bat的文件,雙擊直接執行這個文件時,就會執行netstat -an這個命令
。
2.
> 這個字符的意思是將”>”前麵的內容傳遞並且覆蓋”>”後麵的內容,它所起的作用是將運行的回顯結果傳遞到後麵的範圍.
例如:ipconfig.txt中的內容是1113333,執行ipconfig /all >ipconfig.txt即將ipconfig /all的內容覆蓋原有的1113333。與這個
符號相似的還有>>它的功能不是覆蓋而追加,即將運行後的內容加到原來的1113333後。
3.
| 這是一個管道傳輸命令,意思是將上一命令執行的結果傳到下一個命令去處理
例如:
dir c:\|find “txt”
以上命令是:查找C:\所有,並發現TXT字符串。
||
Usage:第一條命令 || 第二條命令 [|| 第三條命令...]
用這種方法可以同時執行多條命令,當碰到執行正確的命令後將不執行後麵的命令,如果沒有出現正確的命令則一直執行完所有命令
;(隻要正確後麵的就不執行)
4.
^ 是對特殊符號”<”,”>”,”&”的前導字符,在命令中他將以上3個符號的特殊功能去掉,僅僅隻把他們當成符號而不使用他們的特殊
意義。
例如:
C:\>echo ipconfig.txt ^>ipconfig
結果為:ipconfig.txt >ipconfig沒有追加隻是顯示出來而已
5.
& 這個符號允許在一行中使用2個以上不同的命令,當第一個命令執行失敗了,也不影響後邊的命令執行
例如:C:\>dir d:/p & dir e: /p & dir c: /p
結果是先後執行
6.
&& 這個命令和上邊的類似,但區別是,第一個命令失敗時,後邊的命令也不會執行
例如:C:\>dir w:/p && dir e: /p && dir c: /p 由於電腦上沒有w盤所以顯示結果為:係統找不到指定的路徑。這樣以來,後麵的
兩個盤就不執行啦。(當第n個命令失敗時此命令後麵的命令將不再執行,也就是說一直執行到失敗為止)
7.
“” 雙引號允許在字符串中包含空格,進入一個特殊目錄可以用如下方法
cd “program files”
cd progra~1
cd pro*
以上三種方法都可以進入program files這個目錄
8.
, 逗號相當於空格,在某些情況下“,”可以用來當做空格使
比如
dir,c:\
9.
; 分號,當命令相同時,可以將不同目標用;來隔離,但執行效果不變,如執行過程中發生錯誤,則隻返回錯誤報告,但程序還是
會執行。
比如:
dir c:\;d:\e:\;f:\
以上命令相當於
dir c:\
dir d:\
dir e:\
dir f:\
但是前麵執行的盤不存在的話,後麵的命令將不會執行。
例如:C:\>dir w:;d: /p;e: /p
結果為:係統找不到指定的路徑。
10.在echo的後麵加一個點,所起到的作用是顯示一空行。
以下範例顯示的批處理程序包含前後各有一個空行的三行消息:
@echo off
echo.
echo This batch program
echo formats and checks
echo new disks
echo.
如果想讓打開的批處理命令的標題欄有名字的話可以用到title這個參數
title filename
“>nul 2>nul”可以屏蔽一切屏幕的輸出,例如:dir >nul 2>nul這樣屏幕上什麼都不會輸出,也就是沒有結果。
1>nul 表示將正確執行目錄樹的信息禁止輸出,2>nul 表示將執行過程中的錯誤信息禁止輸出。
斷開網絡連接方法有兩種:一種是rasphone /h adsl,另一種是rasdial adsl /d
11.goto一般和:是聯用的goto跳轉的地方入口就是”:”。goto命令的另一種用法一:提前結束程序。在程序中間使用goto命令跳轉到
某一標簽,而這一標簽的內容卻定義為退出。如:
……
goto end
……
:end
dir中有些命令是要牢記的
dir d: /s /p /b (/a這後麵還有一些參數像h,r,d,s/d)具體的可以看幫助
%userprofile%在寫批處理時這個相當於C:\Documents and Settings\Administrator
在結束關鍵進程的時候,要先結束explorer.exe這個進程,最好用係統自帶的工具taskkill這個關explorer.exe的時候任何殺毒軟件
都沒有提示,但是如果換成了用ntsd關的話,卡巴斯基會報毒,而且這時的explorer會在關閉的一下後馬上自啟動,而taskkill就會
一直關著直到等你開啟為止。
在使用for 的時候當用到 /d時,那是因為set中有* ?這兩個通配符
shift
1.可替代參數的編號是%o-%9,如果要在一個命令行上使用超過10個可以被代換的參數,則可使用SHIFT命令來突破此限製。
2.每當執行sHIFT一次,命令行上的所有參數將向左移動一位。%1的內容將為%2的內容所取代…,%9內容則由新的參數取代。
3.%o表示批處理文件本身的名稱,永遠不變,所以每次執行時可以在批處理文件使用一次shift就向右移動一位,例如:
a.bat的內容:
@echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift
@echo %1 %2 %3 %4 %5 %6 %7 %8 %9
shift
@echo %1 %2 %3 %4 %5 %6 %7 %8 %9
pause
運行
c:\>a 1 2 3 4 5 6 7 8 9 10 11(其後有11個參數)
1 2 3 4 5 6 7 8 9 (取到最前麵9個參數)
c:\>shift (移位)
2 3 4 5 6 7 8 9 10 11(取到另外9個參數)
c:\>shift (移位)
3 4 5 6 7 8 9 10 (取到另外9個參數)
在批處理中del /f /s /q可以刪除指定目錄下的任何文件,但是不能刪除文件夾,rd /s /q不但可以刪除指定目錄下的文件夾而且還
可以刪除目錄下的所有文件,以前總是以為rd隻能刪除文件夾,現在才知道用這個命令還以刪除文件夾
@echo off @echo off
:top :top
if (%1)==() goto end if (%1)==()goto end
shift shift
echo still running echo still running
goto top goto top
:end :end
看到了吧!兩個程序就是第三行的goto前麵不一樣,第一個有一個空格,而第二個沒有,就是這個空格所產生的結果就不一樣,第一
個結果是三行still running,而第二個結果是一個無限製的循環,一直不停的顯示still running,所以寫程序的時候一定要注意
errorlevel
若一個程序或DOS命令執行成功,則返回的E隻RORLEVEL的值為o,否則為1至255之間AscII值的任意整數,其值隻占一個字節約內存
空間,值得注意的是IF語句中檢驗的ERRORLEVEL值是大於或等於而不是等於,例如語句IF ERRORLEVEL 5檢驗的是ERRORLEVEL>=5而
不是ERRORLEVEL=5,因此對於5至255之間的任何整數,此語句檢驗結果都是真值。
在變量延遲時要用到setlocal EnableDelayedExpansion
例如:
@echo off
setlocal EnableDelayedExpansion
…….
然後寫要用的代碼
需要注意的是,一旦啟用了變量延遲,就要用!號把變量括起來,而不能用%號。
echo !n!
顯示變量n的值
例如:
@echo off &SETLOCAL ENABLEDELAYEDEXPANSION
set mm=gril&echo !mm!
pause
ping 在批處理中有延時的作用,開始的時候不知道怎麼用,後來才發現,每ping一次的時間是一秒,所以寫成ping /n 10 127.1或者
是ping /n 10 localhost效果是一樣的,都能起來延時十秒的作用
set
SET /A expression
環境變量替換已如下增強:
%PATH:str1=str2%
%PATH:~10,5%
%PATH:~-10%
%PATH:~0,-2%
%PATH:str1=str2%這個操作就是把變量%PATH%的裏的str1全部用str2替換
例如:
@echo off
set a= bbs.verybat.cn
echo 替換前的值: “%a%”
set var=%a: =qq%
echo 替換後的值: “%var%”
pause
結果是:替換前的值: ” bbs.verybat.cn” 很明顯吧,那個空格被qq給代替啦^-^
替換後的值: “qqbbs.verybat.cn”
請按任意鍵繼續. . .
@echo off
set a=bbs.verybat.cn
echo 替換前的值: “%a%”
set var=%a:.=傷腦筋%
echo 替換後的值: “%var%”
pause
解釋set var=%a:.=傷腦筋%
set命令 var變量名 字a是要進行字符替換的變量的值,”.”為要替換的值,
“傷腦筋”為替換後的值!
執行後就會把變量%a%裏麵的”.”全部替換為”傷腦筋”
這就是set的替換字符的很好的功能!先講到這
%PATH:~10,5%
@echo off
set a=bbs.verybat.cn
set var=%a:~1,2%
echo %var%
pause
執行後,我們會發現隻顯示了”bs”兩個字母,我們的變量%a%的值不是為bbs.verybat.cn嗎
怎麼隻顯示了第2個字母和第3個字母”bs”,分析一結果我們就可以很容易看出
%PATH:~10,5%就是顯示變量PATH裏指定幾位的值!
分析set var=%a:~1,2%
set命令 var變量值 a要進行字符操作的變量 “1″從變量”a”第幾位下一位開始顯示 “2″顯示幾位
和起來就是把變量a的值從第一位開始,把後兩位賦予給變量var
%PATH:~-10% 例子
@echo off
set a=bbs.verybat.cn
set var=%a:~-3%
echo %var%
pause
這個的意思是從右往左取三位,把取到的部分給了var ,如果把負號去掉,就成了從左往右去掉三位把剩下的部分給了var
%PATH:~0,-2% 例子
@echo off
set a=bbs.verybat.cn
set var=%a:~4,-3%
echo %var%
pause
結果是verybat,這段代碼的意思是,從右去掉三位,把左剩餘的部分,從第四位的下一位開始顯示,把顯示的內容給了var
如果改成set var=%a:~3,-3%結果就是.verybat
延遲和set的綜合應用:
@echo off
setlocal enabledelayedexpansion
title I Love Greatwall
set love=I Love Greatwall Forever
for /l %%i in (1,1,24) do (cls
echo. !love:~0,%%i!
ping/n 1 127.1>nul 2>nul)
pause
我覺得這段代碼很意思,do裏麵的命令主要是分三塊但是這三塊不能在同一行,分三行寫.因為它們是不同的命令,要想寫在一行的
話要加&,寫好後為for /l %%i in (1,1,24) do (cls &echo. !love:~0,%%i! &ping/n 1 127.1>nul 2>nul)
for
在DOs提示符下可直接使用FOR語句,用法的區別在於必須把%%variable寫成%variable
關於FOR語句的使用方法,歸納如下:
(1)為了在各種DOS版本下都能運行,%%vart6le的變量必須為單個字符,應避
免使用%%o一%%9作為變量。
(2)FOR%%variaNeIN tnle s就)command%%variable其中File set必須放在
括號內,文件的個數沒有限製,隻要不超過D05命令行127個字符的限製即可,文件之
間用空格或逗號作為分隔符分開,文件名可以使用通配符。
(3)FoR語句中後麵的變量有時可省略,如:
FOR%%a IN(*.BAK)D0 DIR
(4)FOR語句的結尾如果執行另一個批處理程序,執行結束後,不再返回FOR語
FOR /D %%variable IN (set) DO command /D參數隻能顯示當前目錄下的目錄名字
@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在C盤根目錄執行,就會把C盤目錄下的全部目錄名字打印出來,而文件名字一個也不顯示!
@echo off
for /d %%i in (???) do @echo %%i
pause
這樣的話如果你當前目錄下有目錄名字隻有1-3個字母的,就會顯示出來,沒有就不顯示了
這裏解釋下*號和?號的作用,*號表示任意N個字符,而?號隻表示任意一個字符
FOR /R [[drive:]path] %%variable IN (set) DO command
它可以把當前或者你指定路徑下的文件名字全部讀取,注意是文件名字
@echo off
for /r c:\ %%i in (*.exe) do @echo %%i
pause
把C盤根目錄,和每個目錄的子目錄下麵全部的EXE文件都列出來了
@echo off
for /r %%i in (*.exe) do @echo %%i
pause
以當前目錄為搜索路徑,顯示當前目錄的全部EXE文件列出來!
for /L %% Variable in (Start#,Step#,End#) do Command
@echo off
for /l %%i in (1,1,5) do start cmd
pause
看上麵的start step end就知道是什麼意思了吧,開始,結束,步階,按一步一個的話,就會總有六個cmd跳出來五個
設置默認的控製台前景和背景顏色。
for /F “ParsingKeywords” %% Variable in (FileNameSet) do Command
“ParsingKeywords”
它表示4個參數
eol=c - 指一個行注釋字符的結尾(就一個)
skip=n - 指在文件開始時忽略的行數。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的
默認分隔符集。
tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代
的 for 本身。這會導致額外變量名稱的分配。m-n
格式為一個範圍。通過 nth 符號指定 mth。如果
符號字符串中的最後一個字符星號,
那麼額外的變量將在最後一個符號解析之後
分配並接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:
在作為命令執行一個後引號的字符串並且一個單
引號字符為文字字符串命令並允許在 filenameset
中使用雙引號擴起文件名稱。
例如:新建一個文件名字為test.txt
內容為:
;哈哈
你好!相信自己一定會成功……
Never Say Die
好啦就這樣吧
@echo off
FOR /F “eol=; tokens=1 delims= ” %%i in (test.txt) do @echo %%i
pause
你好!相信自己一定會成功……
Never
好啦就這樣吧
這個命令會讀取在當前目錄下名為test.txt文件中的內容,然後將每一行的內容賦值給變量%%i,然後忽略掉以;號開頭的行,並且以空
格做為分隔符號,打印第每行以空各做分隔符號的第一列
又例如:
@echo off
for /f “tokens=3 delims=- ” %%a in (’date /t’) do @echo %%a
pause
date /t的結果是:2007-08-22 星期三
所以批處理的結果為:22
@echo off
for /f “tokens=2,3,4 delims=-” %%a in (’date /t’) do @echo %%c-%%a-%%b
pause
結果為:-08-22 星期三
總結:以上兩個的結果都是從date /t中以”-”為分隔符,從左往右依次取第三列(這就是第一個的結果22),第二,三,四列(這就是
第二個的結果-08-22 星期三),這個for以後的用處還很大.
FOR的變量全部列出來:凡是 %~ 開頭的操作符,都是文件名的分離操作
~I - 刪除任何引號(”),擴展 %I
這個變量的作用就如他的說明,刪除引號!
我們來看這個例子:
首先我們在桌麵建立一個名字為temp.txt文本文件,在裏麵輸入這些內容
“1111
2222″
“3333″
44″44
然後在建立個BAT文件代碼如下:
FOR /F “delims=” %%i IN (temp.txt) DO @echo %%~i
pause
執行後,我們看CMD的回顯如下:
1111
2222″
3333
44″44
和之前temp.txt中的內容對比一下,我們會發現第一行和第三行的引號都消失了,這就是刪除引號~i的作用了!
刪除引號規則如下(BAT兄補充!)
1、若字符串首尾同時存在引號,則刪除首尾的引號;
2、若字符串尾不存在引號,則刪除字符串首的引號;
3、如果字符串中間存在引號,或者隻在尾部存在引號,則不刪除
%~fI - 將 %I 擴展到一個完全合格的路徑名
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~fi
pause
執行後顯示內容如下
C:\Documents and Settings\Administrator\桌麵\test.bat
C:\Documents and Settings\Administrator\桌麵\test.vbs
當我把代碼中的 %%~fi直接改成%%i
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%i
pause
執行後就會顯示這些內容
test.bat
test.vbs
%~dI - 僅將 %I 擴展到一個驅動器號
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~di
pause
執行後我CMD裏顯示如下
C:
C:
%%~di作用是,如果變量%%i的內容是一個文件或者目錄名,那麼%%~di就會把%%i這文件或者目錄所在的盤符號打印出來!
%~pI - 僅將 %I 擴展到一個路徑
這個用法和上麵一樣,他隻打印路徑不打印文件名字
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~pi
pause
\Documents and Settings\Administrator\桌麵\
%~nI - 僅將 %I 擴展到一個文件名
隻打印文件名字
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~ni
pause
test
%~xI - 僅將 %I 擴展到一個文件擴展名
隻打印文件的擴展名
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~xi
pause
.vbs
.bat
.txt
.txt
.txt
%~sI - 擴展的路徑隻含有短名
打印絕對短文件名
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~si
pause
C:\DOCUME~1\ADMINI~1\桌麵\a.vbs
C:\DOCUME~1\ADMINI~1\桌麵\a2.bat
C:\DOCUME~1\ADMINI~1\桌麵\q.txt
C:\DOCUME~1\ADMINI~1\桌麵\test.txt
C:\DOCUME~1\ADMINI~1\桌麵\_討論_~1.TXT
C:\DOCUME~1\ADMINI~1\桌麵\常用工具
%~aI - 將 %I 擴展到文件的文件屬性
打印文件的屬性
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~ai
pause
–a——
–a——
–a——
–a——
–a——
dr——-
%~tI - 將 %I 擴展到文件的日期/時間
打印文件建立的日期
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~ti
pause
2007-08-21 12:30
2007-08-22 18:40
2007-08-22 12:31
2007-08-22 17:58
2007-08-19 23:23
2007-08-16 14:28
%~zI - 將 %I 擴展到文件的大小
打印文件的大小
FOR /F “delims==” %%i IN (’dir /b’) DO @echo %%~zi
pause
76
439
558
64
34614
0
最後一個不是個文件而是一個文件夾,所以顯示為0,其實不為0的
%~$PATH:I - 查找列在路徑環境變量的目錄,並將 %I 擴展
到找到的第一個完全合格的名稱。如果環境變量名
未被定義,或者沒有找到文件,此組合鍵會擴展到
空字符串
我們先在桌麵建立一個temp.txt文件,裏麵寫上這些內容
c:\windows
c:\windows\system32
c:\windows\teett
然後在把這些代碼保存為批處理,放在桌麵.
FOR /F “delims==” %%i IN (temp.txt) DO @echo %%~$PATH:i
pause
執行後CMD顯示如下內容
c:\WINDOWS
c:\WINDOWS\system32
ECHO 處於打開狀態。
為什麼會這樣呢,還有一行c:\windows\teett呢?
我們直接在CMD裏輸入echo %path% 會顯示C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
%%~$PATH:i也就是在文本裏尋找匹配這個PATH變量值的內容,如果裏麵的內容和PATH變量相同,就打印出來
如果不相同,就顯示一個空行!
COLOR [attr]
attr 指定控製台輸出的顏色屬性
顏色屬性由兩個十六進製數字指定 — 第一個為背景,第二個則為
前景。每個數字可以為以下任何值之一:
0 = 黑色 8 = 灰色
1 = 藍色 9 = 淡藍色
2 = 綠色 A = 淡綠色
3 = 湖藍色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色
如果沒有給定任何參數,該命令會將顏色還原到 CMD.EXE 啟動時
的顏色。這個值來自當前控製台窗口、/T 開關或
DefaultColor 注冊表值。
如果用相同的前景和背景顏色來執行 COLOR 命令,COLOR 命令
echo test>test\x.txt 這句的意思是在test文件夾下往x.txt中寫入test
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[ ...]]
/V 顯示所有未包含指定字符串的行。
/C 僅顯示包含字符串的行數。
/N 顯示行號。
/I 搜索字符串時忽略大小寫。
/OFF[LINE] 不要跳過具有脫機屬性集的文件。
“string” 指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。
REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data]
KeyName [\\Machine\]FullKey
遠程機器的機器名 - 忽略默認到當前機器。
遠程機器上隻有 HKLM 和 HKU。
FullKey ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所選 ROOTKEY 下注冊表項的完整名
/v 所選項之下要添加的值名
/ve 為注冊表項添加空白值名<無名稱>
/t RegKey 數據類型
[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
REG_NONE | REG_EXPAND_SZ ]
如果忽略,則采用 REG_SZ
/s 指定一個在 REG_MULTI_SZ 數據字符串中
用作分隔符的字符
如果忽略,則將 “” 用作分隔符
/d 要分配給添加的注冊表 ValueName 的數據
/f 不用提示就強行改寫現有注冊表項
例如:
REG ADD \\ABC\HKLM\Software\MyCo
添加遠程機器 ABC 上的一個注冊表項 HKLM\Software\MyCo
REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
添加一個值(名稱: Data,類型: REG_BINARY,數據: fe340ead)
REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d faxmail
添加一個值(名稱: MRU,類型: REG_MUTLI_SZ,數據: faxmail)
REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
添加一個值(名稱: Path,類型: REG_EXPAND_SZ,數據: %systemroot%)
注意: 在擴充字符串中使用雙百分比符號( %% )
設置屏幕每行顯示字符數和每屏的行數 例如∶ MODE CONt COLS=80 LINES=25
如果要在批處理中生成一個空的文本文件可以這樣寫
type nul>a.txt
find的參數:
/C 僅顯示包含字符串的行數。
/N 顯示行號。
/I 搜索字符串時忽略大小寫。
這三個是常用的
if和else必須在一行之上,比較運算符有
大於 gtr
大於等於 geq
等於 equ或者==
小於等於 leq
小於 lss
else和if必須在一行之上,如果有else部分的話,else前麵的command部分必須用()括起來。
FINDSTR正則表達式的基本用法
1.findstr . 2.txt 或 Findstr “.” 2.txt
從文件2.txt中查找任意字符,不包括空字符或空行
====================
2.findstr .* 2.txt 或 findstr “.*” 2.txt
從文件2.txt中查找任意字符包括空行和空字符
====================
3.findstr “[0-9]” 2.txt
從文件2.txt中查找包括數字0-9的字符串或行
====================
4.findstr “[a-zA-Z]” 2.txt
從文件2.txt中查找包括任意字符的字符串或行
====================
5.findstr “[abcezy]” 2.txt
從文件2.txt中查找包括a b c e z y字母的字符串或行
====================
6.findstr “[a-fl-z]” 2.txt
從文件2.txt中查找小寫字符a-f l-z的字符串,但不包含g h I j k這幾個字母。
====================
7.findstr “M[abc][hig]Y” 2.txt
從文件2.txt中可以匹配 MahY , MbiY, MahY等…..
====================
8. ^和$符號的應用
^ 表示行首,”^step”僅匹配 “step hello world”中的第一個單詞
$ 表示行尾,”step$”僅匹配 “hello world step”中最後一個單詞
====================
9.finstr “[^0-9]” 2.txt
如果是純數字的字符串或者行便過濾掉,例如2323423423 這樣的字符串,如果是345hh888這樣的形式就不成了。
====================
10.findstr “[^a-z]” 2.txt
同上,如果是純字母的字符串或者行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf這樣的字符,如果是sdfksjdkf99999這樣的形式,摻
雜著數字就不成了
====================
11.*號的作用
前麵已經說過了 “.*”表示搜索的條件是任意字符,*號在正則表達式中的作用不是任何字符,而是表示左側字符或者表達式的重複次
數,*號表示重複的次數為零次或者多次。
====================
12.findstr “^[0-9]*$” 2.txt
這個是匹配找到的純數字,例如 234234234234,如果是2133234kkjl234就被過濾掉了。
Findstr “^[a-z]*$” 2.txt
這個是匹配找到的純字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被過濾掉了
如果在搜索條件裏沒有*號,也就是說不重複左側的搜索條件,也就是[0-9] [a-z]那隻能匹配字符串的第一個字符也隻有這一個字符
,因為有行首和行尾的限製,”^[0-9]$”第一個字符如果是數字就匹配,如果不是就過濾掉,如果字符串是 9 就匹配,如果是98或者
9j之類的就不可以了。
=====================
13. “\<…\>”這個表達式的作用
這個表示精確查找一個字符串,\<sss 表示字的開始位置,sss\>表示字的結束位置
echo hello world computer|findstr “\<computer\>”這樣的形式
echo hello worldcomputer|findstr “\<computer\>” 這樣的形式就不成了,他要找的是 “computer”這個字符串,所以不可以。
echo hello worldcomputer|findstr “.*computer\>”這樣就可以匹配了
所學知識的應用:
@echo off
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 該休息啦.bat /t reg_sz >nul
@echo off
:start
for /f “delims=: tokens=2″ %%i in (’systeminfo ^| findstr “係統啟動時間”‘) do set a=%%i
set var=%a:~2,1%
if var geq 2 (goto alert) else goto start
:alert
echo msgbox “該休息啦”>alert.vbs
call alert
del /f/q alert.vbs,time.txt
pause
這個是我自己寫的,其實也沒有什麼用就是把自己的東西串一下,從這段代碼中我學到了不少東西,在if的時候一定記得要在else前
的command加括號,還有就是^的使用,看看上麵,它就是顯示它後麵的符號,使它們失去功能,還有好多,嗬嗬,都在程序裏啦。
還有就是pan斷大小的使用
其中,比較運算符可以是:
equ - 等於
neq - 不等於
lss - 小於
leq - 小於或等於
gtr - 大於
geq - 大於或等於
在一行上寫上三個echo.相當於空三行echo.&echo.&echo.這是正確的格式,就是空三行
SET /P verybat= 請選擇要進行的操作:
IF /I “%verybat:~0,1%”==”1″ GOTO 1
IF /I “%verybat:~0,1%”==”2″ GOTO 2
@echo off
echo 正在準備生成加密的jpg圖片
echo 請將要加密的圖片改名為1.jpg
echo 請將要密語保存為2.txt
echo 按任意鍵開始加密
pause
Copy 1.jpg/b + 2.txt/a 3.jpg
echo 加密結束
echo 程序將生成加密圖片3.jpg
pause
以上是圖片加密的代碼,看看很簡單的吧嗬嗬
用到了copy的參數
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]
source 指定要複製的文件。
/A 表示一個 ASCII 文本文件。
/B 表示一個二進位文件。
/D 允許解密要創建的目標文件
destination 為新文件指定目錄和/或文件名。
/V 驗證新文件寫入是否正確。
/N 複製帶有非 8dot3 名稱的文件時,
盡可能使用短文件名。
/Y 不使用確認是否要改寫現有目標文件
的提示。
/-Y 使用確認是否要改寫現有目標文件
的提示。
/Z 用可重新啟動模式複製已聯網的文件。
命令行開關 /Y 可以在 COPYCMD 環境變量中預先設定。
這可能會被命令行上的 /-Y 替代。除非 COPY
命令是在一個批文件腳本中執行的,默認值應為
在改寫時進行提示。
要附加文件,請為目標指定一個文件,為源指定
數個文件(用通配符或 file1+file2+file3 格式)。
文章來源於網絡:
https://www.zhztk.com/a/xitongjiagou/windowsxitong/batjiaoben/2010/0729/344.html
最後更新:2017-01-04 22:34:47