日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

批处理的一些小技巧

發(fā)布時(shí)間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批处理的一些小技巧 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

批處理各符號的功能:
1.
echo
有兩個(gè)狀態(tài)一個(gè)是on 一個(gè)是off默認(rèn)的是on 它的功能是顯示當(dāng)前文件的路徑,如果不寫on 或者是off的時(shí)候,默認(rèn)情況下

是打開的即顯當(dāng)前文件的路徑,加上off后,所有路徑都不顯示,但是echo off這行還能顯出來,要讓這行也消失的話就在它們前面

加一個(gè)@@echo off,另外echo命令的另一種用法,可以直接編輯文本文件,例如:
echo netstat -an >a.bat
結(jié)晶果是在當(dāng)前目錄下生成一個(gè)a.bat的文件,雙擊直接執(zhí)行這個(gè)文件時(shí),就會執(zhí)行netstat -an這個(gè)命令

。

2.
>
這個(gè)字符的意思是將">"前面的內(nèi)容傳遞并且覆蓋">"后面的內(nèi)容,它所起的作用是將運(yùn)行的回顯結(jié)果傳遞到后面的范圍
.
例如:ipconfig.txt中的內(nèi)容是1113333,執(zhí)行ipconfig /all >ipconfig.txt即將ipconfig /all的內(nèi)容覆蓋原有的1113333。與這個(gè)

符號相似的還有>>它的功能不是覆蓋而追加,即將運(yùn)行后的內(nèi)容加到原來的1113333后。

3.
|
這是一個(gè)管道傳輸命令,意思是將上一命令執(zhí)行的結(jié)果傳到下一個(gè)命令去處理

例如:
dir c:/|find "txt"
以上命令是:查找C/所有,并發(fā)現(xiàn)TXT字符串。

||

Usage:第一條命令 || 第二條命令 [|| 第三條命令...]

用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令

(只要正確后面的就不執(zhí)行)

4.
^
是對特殊符號"<",">","&"的前導(dǎo)字符,在命令中他將以上3個(gè)符號的特殊功能去掉,僅僅只把他們當(dāng)成符號而不使用他們的特殊

意義。
例如:
C:/>echo ipconfig.txt ^>ipconfig

結(jié)果為:ipconfig.txt >ipconfig沒有追加只是顯示出來而已

5.
&
這個(gè)符號允許在一行中使用2個(gè)以上不同的命令,當(dāng)?shù)谝粋€(gè)命令執(zhí)行失敗了,也不影響后邊的命令執(zhí)行。

例如:C:/>dir d:/p & dir e: /p & dir c: /p
結(jié)果是先后執(zhí)行

6.
&&
這個(gè)命令和上邊的類似,但區(qū)別是,第一個(gè)命令失敗時(shí),后邊的命令也不會執(zhí)行

例如:C:/>dir w:/p && dir e: /p && dir c: /p 由于電腦上沒有w盤所以顯示結(jié)果為:系統(tǒng)找不到指定的路徑。這樣以來,后面的

兩個(gè)盤就不執(zhí)行啦。(當(dāng)?shù)?span lang="EN-US">n個(gè)命令失敗時(shí)此命令后面的命令將不再執(zhí)行,也就是說一直執(zhí)行到失敗為止)
7.
""
雙引號允許在字符串中包含空格,進(jìn)入一個(gè)特殊目錄可以用如下方法

cd "program files"
cd progra~1
cd pro*

以上三種方法都可以進(jìn)入program files這個(gè)目錄

8.
,
逗號相當(dāng)于空格,在某些情況下“,”可以用來當(dāng)做空格使

比如

dir,c:/

9.
;
分號,當(dāng)命令相同時(shí),可以將不同目標(biāo)用;來隔離,但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯(cuò)誤,則只返回錯(cuò)誤報(bào)告,但程序還是

會執(zhí)行。

比如:

dir c:/;d:/e:/;f:/

以上命令相當(dāng)于

dir c:/
dir d:/
dir e:/
dir f:/
但是前面執(zhí)行的盤不存在的話,后面的命令將不會執(zhí)行。

例如:C:/>dir w:;d: /p;e: /p
結(jié)果為:系統(tǒng)找不到指定的路徑。

10.echo的后面加一個(gè)點(diǎn),所起到的作用是顯示一空行。

以下范例顯示的批處理程序包含前后各有一個(gè)空行的三行消息:

@echo off
echo.
echo This batch program
echo formats and checks
echo new disks
echo.

如果想讓打開的批處理命令的標(biāo)題欄有名字的話可以用到title這個(gè)參數(shù)

title filename


">nul 2>nul"
可以屏蔽一切屏幕的輸出,例如:dir >nul 2>nul這樣屏幕上什么都不會輸出,也就是沒有結(jié)果。

1>nul 表示將正確執(zhí)行目錄樹的信息禁止輸出,2>nul 表示將執(zhí)行過程中的錯(cuò)誤信息禁止輸出。


斷開網(wǎng)絡(luò)連接方法有兩種:一種是rasphone /h adsl,另一種是rasdial adsl /d
11.goto
一般和:是聯(lián)用的goto跳轉(zhuǎn)的地方入口就是":"。goto命令的另一種用法一:提前結(jié)束程序。在程序中間使用goto命令跳轉(zhuǎn)到

某一標(biāo)簽,而這一標(biāo)簽的內(nèi)容卻定義為退出。如:
……
goto end
……
:end


dir
中有些命令是要牢記的
dir d: /s /p /b (/a
這后面還有一些參數(shù)像h,r,d,s/d)具體的可以看幫助


%userprofile%
在寫批處理時(shí)這個(gè)相當(dāng)于C:/Documents and Settings/Administrator

在結(jié)束關(guān)鍵進(jìn)程的時(shí)候,要先結(jié)束explorer.exe這個(gè)進(jìn)程,最好用系統(tǒng)自帶的工具taskkill這個(gè)關(guān)explorer.exe的時(shí)候任何殺毒軟件

都沒有提示,但是如果換成了用ntsd關(guān)的話,卡巴斯基會報(bào)毒,而且這時(shí)的explorer會在關(guān)閉的一下后馬上自啟動(dòng),而taskkill就會

一直關(guān)著直到等你開啟為止。

在使用for 的時(shí)候當(dāng)用到 /d時(shí),那是因?yàn)?span lang="EN-US">set中有* ?這兩個(gè)通配符


shift

1.可替代參數(shù)的編號是%o-9,如果要在一個(gè)命令行上使用超過10個(gè)可以被代換的參數(shù),則可使用SHIFT命令來突破此限制。
2.
每當(dāng)執(zhí)行sHIFT一次,命令行上的所有參數(shù)將向左移動(dòng)一位。%1的內(nèi)容將為%2的內(nèi)容所取代,%9內(nèi)容則由新的參數(shù)取代。
3.
o表示批處理文件本身的名稱,永遠(yuǎn)不變,所以每次執(zhí)行時(shí)可以在批處理文件使用一次shift就向右移動(dòng)一位,例如:

a.bat的內(nèi)容:

@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

運(yùn)行
c:/>a 1 2 3 4 5 6 7 8 9 10 11(
其后有11個(gè)參數(shù))
1 2 3 4 5 6 7 8 9 (
取到最前面9個(gè)參數(shù)
)
c:/>shift (
移位
)
2 3 4 5 6 7 8 9 10 11(
取到另外9個(gè)參數(shù)
)
c:/>shift (
移位
)
3 4 5 6 7 8 9 10 (
取到另外9個(gè)參數(shù))


在批處理中del /f /s /q可以刪除指定目錄下的任何文件,但是不能刪除文件夾,rd /s /q不但可以刪除指定目錄下的文件夾而且還

可以刪除目錄下的所有文件,以前總是以為rd只能刪除文件夾,現(xiàn)在才知道用這個(gè)命令還以刪除文件夾


@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

看到了吧!兩個(gè)程序就是第三行的goto前面不一樣,第一個(gè)有一個(gè)空格,而第二個(gè)沒有,就是這個(gè)空格所產(chǎn)生的結(jié)果就不一樣,第一

個(gè)結(jié)果是三行still running,而第二個(gè)結(jié)果是一個(gè)無限制的循環(huán),一直不停的顯示still running,所以寫程序的時(shí)候一定要注意


errorlevel
若一個(gè)程序或DOS命令執(zhí)行成功,則返回的ERORLEVEL的值為o,否則為1255之間AscII值的任意整數(shù),其值只占一個(gè)字節(jié)約內(nèi)存

空間,值得注意的是IF語句中檢驗(yàn)的ERRORLEVEL值是大于或等于而不是等于,例如語句IF ERRORLEVEL 5檢驗(yàn)的是ERRORLEVEL>=5

不是ERRORLEVEL=5,因此對于5255之間的任何整數(shù),此語句檢驗(yàn)結(jié)果都是真值。


在變量延遲時(shí)要用到setlocal EnableDelayedExpansion
例如:

@echo off
setlocal EnableDelayedExpansion
.......
然后寫要用的代碼

需要注意的是,一旦啟用了變量延遲,就要用!號把變量括起來,而不能用%號。

echo !n!
顯示變量n的值

例如:
@echo off &SETLOCAL ENABLEDELAYEDEXPANSION
set mm=gril&echo !mm!
pause

ping 在批處理中有延時(shí)的作用,開始的時(shí)候不知道怎么用,后來才發(fā)現(xiàn),每ping一次的時(shí)間是一秒,所以寫成ping /n 10 127.1或者

ping /n 10 localhost效果是一樣的,都能起來延時(shí)十秒的作用


set

SET /A expression
環(huán)境變量替換已如下增強(qiáng)
:
%PATH:str1=str2%
%PATH:~10,5%
%PATH:~-10%
%PATH:~0,-2%

%PATH:str1=str2%這個(gè)操作就是把變量%PATH%的里的str1全部用str2替換

例如:
@echo off
set a= bbs.verybat.cn
echo
替換前的值: "%a%"
set var=%a: =qq%
echo
替換后的值
: "%var%"
pause

結(jié)果是:替換前的值: " bbs.verybat.cn" 很明顯吧,那個(gè)空格被qq給代替啦^-^
替換后的值
: "qqbbs.verybat.cn"
請按任意鍵繼續(xù). . .


@echo off
set a=bbs.verybat.cn
echo
替換前的值: "%a%"
set var=%a:.=
傷腦筋
%
echo
替換后的值
: "%var%"
pause

解釋set var=%a:.=傷腦筋%
set
命令 var變量名 字a是要進(jìn)行字符替換的變量的值,"."為要替換的值
,
"
傷腦筋"為替換后的值
!
執(zhí)行后就會把變量%a%里面的"."全部替換為"傷腦筋
"
這就是set的替換字符的很好的功能!先講到這


%PATH:~10,5%

@echo off
set a=bbs.verybat.cn
set var=%a:~1,2%
echo %var%
pause

執(zhí)行后,我們會發(fā)現(xiàn)只顯示了"bs"兩個(gè)字母,我們的變量%a%的值不是為bbs.verybat.cn
怎么只顯示了第2個(gè)字母和第3個(gè)字母"bs",分析一結(jié)果我們就可以很容易看出
%PATH:~10,5%
就是顯示變量PATH里指定幾位的值!
分析
set var=%a:~1,2%
set
命令 var變量值 a要進(jìn)行字符操作的變量 "1"從變量"a"第幾位下一位開始顯示 "2"顯示幾位

和起來就是把變量a的值從第一位開始,把后兩位賦予給變量var

%PATH:~-10% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~-3%
echo %var%
pause


這個(gè)的意思是從右往左取三位,把取到的部分給了var ,如果把負(fù)號去掉,就成了從左往右去掉三位把剩下的部分給了var

%PATH:~0,-2% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~4,-3%
echo %var%
pause

結(jié)果是verybat,這段代碼的意思是,從右去掉三位,把左剩余的部分,從第四位的下一位開始顯示,把顯示的內(nèi)容給了var

如果改成set var=%a:~3,-3%結(jié)果就是.verybat

延遲和set的綜合應(yīng)用:

@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里面的命令主要是分三塊但是這三塊不能在同一行,分三行寫.因?yàn)樗鼈兪遣煌拿?#xff0c;要想寫在一行的

話要加&,寫好后為for /l %%i in (1,1,24) do (cls &echo. !love:~0,%%i! &ping/n 1 127.1>nul 2>nul)


for
DOs提示符下可直接使用FOR語句,用法的區(qū)別在于必須把%%variable寫成%variable

關(guān)于FOR語句的使用方法,歸納如下:
(1)
為了在各種DOS版本下都能運(yùn)行,%%vart6le的變量必須為單個(gè)字符,應(yīng)避
免使用%%o一%%9作為變量。
(2)FOR
%%variaNeIN tnle s)command%%variable其中File set必須放在
括號內(nèi),文件的個(gè)數(shù)沒有限制,只要不超過D05命令行127個(gè)字符的限制即可,文件之
間用空格或逗號作為分隔符分開,文件名可以使用通配符。
(3)FoR
語句中后面的變量有時(shí)可省略,如:
FOR
%%a IN(*.BAK)D0 DIR
(4)FOR
語句的結(jié)尾如果執(zhí)行另一個(gè)批處理程序,執(zhí)行結(jié)束后,不再返回FOR

FOR /D %%variable IN (set) DO command /D參數(shù)只能顯示當(dāng)前目錄下的目錄名字

@echo off
for /d %%i in (*) do @echo %%i
pause
把他保存放在C盤根目錄執(zhí)行,就會把C盤目錄下的全部目錄名字打印出來,而文件名字一個(gè)也不顯示!

@echo off
for /d %%i in (???) do @echo %%i
pause
這樣的話如果你當(dāng)前目錄下有目錄名字只有1-3個(gè)字母的,就會顯示出來,沒有就不顯示了

這里解釋下*號和?號的作用,*號表示任意N個(gè)字符,?號只表示任意一個(gè)字符

FOR /R [[drive:]path] %%variable IN (set) DO command

它可以把當(dāng)前或者你指定路徑下的文件名字全部讀取,注意是文件名字

@echo off
for /r c:/ %%i in (*.exe) do @echo %%i
pause

C盤根目錄,和每個(gè)目錄的子目錄下面全部的EXE文件都列出來了


@echo off
for /r %%i in (*.exe) do @echo %%i
pause

以當(dāng)前目錄為搜索路徑,顯示當(dāng)前目錄的全部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就知道是什么意思了吧,開始,結(jié)束,步階,按一步一個(gè)的話,就會總有六個(gè)cmd跳出來五個(gè)
設(shè)置默認(rèn)的控制臺前景和背景顏色。


for /F "ParsingKeywords" %% Variable in (FileNameSet) do Command

"ParsingKeywords"
它表示4個(gè)參數(shù)

eol=c -
指一個(gè)行注釋字符的結(jié)尾(就一個(gè))
skip=n -
指在文件開始時(shí)忽略的行數(shù)。

delims=xxx -
指分隔符集。這個(gè)替換了空格和跳格鍵的
默認(rèn)分隔符集。
tokens=x,y,m-n -
指每行的哪一個(gè)符號被傳遞到每個(gè)迭代
for 本身。這會導(dǎo)致額外變量名稱的分配。m-n
格式為一個(gè)范圍。通過 nth 符號指定 mth。如果

符號字符串中的最后一個(gè)字符星號,
那么額外的變量將在最后一個(gè)符號解析之后
分配并接受行的保留文本。
usebackq -
指定新語法已在下類情況中使用:
在作為命令執(zhí)行一個(gè)后引號的字符串并且一個(gè)單

引號字符為文字字符串命令并允許在 filenameset
中使用雙引號擴(kuò)起文件名稱。

例如:新建一個(gè)文件名字為test.txt
內(nèi)容為:

;
哈哈
你好!相信自己一定會成功……
Never Say Die
好啦就這樣吧

@echo off
FOR /F "eol=; tokens=1 delims= " %%i in (test.txt) do @echo %%i
pause

你好!相信自己一定會成功……
Never
好啦就這樣吧

這個(gè)命令會讀取在當(dāng)前目錄下名為test.txt文件中的內(nèi)容,然后將每一行的內(nèi)容賦值給變量%%i,然后忽略掉以;號開頭的行,并且以空

格做為分隔符號,打印第每行以空各做分隔符號的第一列

又例如:
@echo off
for /f "tokens=3 delims=- " %%a in ('date /t') do @echo %%a
pause

date /t的結(jié)果是:2007-08-22 星期三
所以批處理的結(jié)果為:22

@echo off
for /f "tokens=2,3,4 delims=-" %%a in ('date /t') do @echo %%c-%%a-%%b
pause


結(jié)果為:-08-22 星期三

總結(jié):以上兩個(gè)的結(jié)果都是從date /t中以"-"為分隔符,從左往右依次取第三列(這就是第一個(gè)的結(jié)果22),第二,三,四列(這就是

第二個(gè)的結(jié)果-08-22 星期三),這個(gè)for以后的用處還很大.


FOR
的變量全部列出來:凡是 %~ 開頭的操作符,都是文件名的分離操作

~I - 刪除任何引號("),擴(kuò)展 %I

這個(gè)變量的作用就如他的說明,刪除引號!
我們來看這個(gè)例子:

首先我們在桌面建立一個(gè)名字為temp.txt文本文件,在里面輸入這些內(nèi)容
"1111
2222"
"3333"
44"44
然后在建立個(gè)BAT文件代碼如下:

FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~i
pause

執(zhí)行后,我們看CMD的回顯如下:
1111
2222"
3333
44"44
和之前temp.txt中的內(nèi)容對比一下,我們會發(fā)現(xiàn)第一行和第三行的引號都消失了,這就是刪除引號~i的作用了
!
刪除引號規(guī)則如下(BAT兄補(bǔ)充
!)
1
、若字符串首尾同時(shí)存在引號,則刪除首尾的引號;

2
、若字符串尾不存在引號,則刪除字符串首的引號;
3
、如果字符串中間存在引號,或者只在尾部存在引號,則不刪除


%~fI -
%I 擴(kuò)展到一個(gè)完全合格的路徑名

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi
pause

執(zhí)行后顯示內(nèi)容如下
C:/Documents and Settings/Administrator/
桌面/test.bat
C:/Documents and Settings/Administrator/
桌面
/test.vbs
當(dāng)我把代碼中的 %%~fi直接改成
%%i
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%i
pause

執(zhí)行后就會顯示這些內(nèi)容
test.bat
test.vbs

%~dI - 僅將 %I 擴(kuò)展到一個(gè)驅(qū)動(dòng)器號

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di
pause
執(zhí)行后我CMD里顯示如下

C:
C:
%%~di
作用是,如果變量%%i的內(nèi)容是一個(gè)文件或者目錄名,那么%%~di就會把%%i這文件或者目錄所在的盤符號打印出來!

%~pI - 僅將 %I 擴(kuò)展到一個(gè)路徑

這個(gè)用法和上面一樣,他只打印路徑不打印文件名字
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~pi
pause

/Documents and Settings/Administrator/桌面/

%~nI - 僅將 %I 擴(kuò)展到一個(gè)文件名

只打印文件名字
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni
pause

test

%~xI - 僅將 %I 擴(kuò)展到一個(gè)文件擴(kuò)展名

只打印文件的擴(kuò)展名
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi
pause

.vbs
.bat
.txt
.txt
.txt

%~sI - 擴(kuò)展的路徑只含有短名

打印絕對短文件名
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 擴(kuò)展到文件的文件屬性

打印文件的屬性
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai
pause

--a------
--a------
--a------
--a------
--a------
dr-------

%~tI - %I 擴(kuò)展到文件的日期/時(shí)間

打印文件建立的日期
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 擴(kuò)展到文件的大小

打印文件的大小
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi
pause

76
439
558
64
34614
0
最后一個(gè)不是個(gè)文件而是一個(gè)文件夾,所以顯示為0,其實(shí)不為0

%~$PATH:I - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)展
到找到的第一個(gè)完全合格的名稱。如果環(huán)境變量名
未被定義,或者沒有找到文件,此組合鍵會擴(kuò)展到
空字符串

我們先在桌面建立一個(gè)temp.txt文件,里面寫上這些內(nèi)容
c:/windows
c:/windows/system32
c:/windows/teett

然后在把這些代碼保存為批處理,放在桌面.
FOR /F "delims==" %%i IN (temp.txt) DO @echo %%~$PATH:i
pause

執(zhí)行后CMD顯示如下內(nèi)容
c:/WINDOWS
c:/WINDOWS/system32
ECHO
處于打開狀態(tài)。

為什么會這樣呢,還有一行c:/windows/teett?
我們直接在CMD里輸入echo %path% 會顯示
C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem
%%~$PATH:i
也就是在文本里尋找匹配這個(gè)PATH變量值的內(nèi)容,如果里面的內(nèi)容和PATH變量相同,就打印出來

如果不相同,就顯示一個(gè)空行!

COLOR [attr]

attr 指定控制臺輸出的顏色屬性

顏色屬性由兩個(gè)十六進(jìn)制數(shù)字指定 -- 第一個(gè)為背景,第二個(gè)則為
前景。每個(gè)數(shù)字可以為以下任何值之一:

0 = 黑色 8 = 灰色
1 =
藍(lán)色 9 = 淡藍(lán)色
2 =
綠色 A = 淡綠色
3 =
湖藍(lán)色 B = 淡淺綠色
4 =
紅色 C = 淡紅色
5 =
紫色 D = 淡紫色
6 =
黃色 E = 淡黃色
7 =
白色 F = 亮白色

如果沒有給定任何參數(shù),該命令會將顏色還原到 CMD.EXE 啟動(dòng)時(shí)
的顏色。這個(gè)值來自當(dāng)前控制臺窗口、/T 開關(guān)或
DefaultColor
注冊表值。

如果用相同的前景和背景顏色來執(zhí)行 COLOR 命令,COLOR 命令

echo test>test/x.txt 這句的意思是在test文件夾下往x.txt中寫入test


FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

/V 顯示所有未包含指定字符串的行。
/C
僅顯示包含字符串的行數(shù)。
/N
顯示行號。
/I
搜索字符串時(shí)忽略大小寫。
/OFF[LINE]
不要跳過具有脫機(jī)屬性集的文件。
"string"
指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。


REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data]

KeyName [//Machine/]FullKey
遠(yuǎn)程機(jī)器的機(jī)器名 - 忽略默認(rèn)到當(dāng)前機(jī)器。

遠(yuǎn)程機(jī)器上只有 HKLM HKU。
FullKey ROOTKEY/SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey
所選 ROOTKEY 下注冊表項(xiàng)的完整名

/v 所選項(xiàng)之下要添加的值名

/ve 為注冊表項(xiàng)添加空白值名<無名稱>

/t RegKey 數(shù)據(jù)類型
[ 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 指定一個(gè)在 REG_MULTI_SZ 數(shù)據(jù)字符串中
用作分隔符的字符
如果忽略,則將 "/0" 用作分隔符

/d 要分配給添加的注冊表 ValueName 的數(shù)據(jù)

/f 不用提示就強(qiáng)行改寫現(xiàn)有注冊表項(xiàng)

例如:

REG ADD //ABC/HKLM/Software/MyCo
添加遠(yuǎn)程機(jī)器 ABC 上的一個(gè)注冊表項(xiàng) HKLM/Software/MyCo

REG ADD HKLM/Software/MyCo /v Data /t REG_BINARY /d fe340ead
添加一個(gè)值(名稱: Data,類型: REG_BINARY,數(shù)據(jù): fe340ead)

REG ADD HKLM/Software/MyCo /v MRU /t REG_MULTI_SZ /d fax/0mail
添加一個(gè)值(名稱: MRU,類型: REG_MUTLI_SZ,數(shù)據(jù): fax/0mail/0/0)

REG ADD HKLM/Software/MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
添加一個(gè)值(名稱: Path,類型: REG_EXPAND_SZ,數(shù)據(jù)
: %systemroot%)
注意: 在擴(kuò)充字符串中使用雙百分比符號( %% )

設(shè)置屏幕每行顯示字符數(shù)和每屏的行數(shù) 例如 MODE CONt COLS=80 LINES=25


如果要在批處理中生成一個(gè)空的文本文件可以這樣寫

type nul>a.txt

find的參數(shù):
/C
僅顯示包含字符串的行數(shù)。
/N
顯示行號。
/I
搜索字符串時(shí)忽略大小寫。
這三個(gè)是常用的


if
else必須在一行之上,比較運(yùn)算符有
大于 gtr
大于等于
geq
等于 equ或者
==
小于等于
leq
小于
lss
else
if必須在一行之上,如果有else部分的話,else前面的command部分必須用()括起來。

FINDSTR正則表達(dá)式的基本用法

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中查找包括數(shù)字09的字符串或行

====================

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這幾個(gè)字母。

====================

7.findstr "M[abc][hig]Y" 2.txt
從文件2.txt中可以匹配 MahY , MbiY, MahY
…..
====================

8. ^$符號的應(yīng)用
^
表示行首,"^step"僅匹配 "step hello world"中的第一個(gè)單詞

$
表示行尾,"step$"僅匹配 "hello world step"中最后一個(gè)單詞

====================

9.finstr "[^0-9]" 2.txt
如果是純數(shù)字的字符串或者行便過濾掉,例如2323423423 這樣的字符串,如果是345hh888這樣的形式就不成了。

====================

10.findstr "[^a-z]" 2.txt
同上,如果是純字母的字符串或者行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf這樣的字符,如果是sdfksjdkf99999這樣的形式,摻

雜著數(shù)字就不成了
====================

11.*號的作用
前面已經(jīng)說過了 ".*"表示搜索的條件是任意字符,*號在正則表達(dá)式中的作用不是任何字符,而是表示左側(cè)字符或者表達(dá)式的重復(fù)次

數(shù),*號表示重復(fù)的次數(shù)為零次或者多次。
====================

12.findstr "^[0-9]*$" 2.txt
這個(gè)是匹配找到的純數(shù)字,例如 234234234234,如果是2133234kkjl234就被過濾掉了。

Findstr "^[a-z]*$" 2.txt
這個(gè)是匹配找到的純字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被過濾掉了

如果在搜索條件里沒有*號,也就是說不重復(fù)左側(cè)的搜索條件,也就是[0-9] [a-z]那只能匹配字符串的第一個(gè)字符也只有這一個(gè)字符

,因?yàn)橛行惺缀托形驳南拗?#xff0c;"^[0-9]$"第一個(gè)字符如果是數(shù)字就匹配,如果不是就過濾掉,如果字符串是 9 就匹配,如果是98或者

9j之類的就不可以了。
=====================

13. "/<…/>"這個(gè)表達(dá)式的作用
這個(gè)表示精確查找一個(gè)字符串,/<sss 表示字的開始位置,sss/>表示字的結(jié)束位置

echo hello world computer|findstr "/<computer/>"
這樣的形式

echo hello worldcomputer|findstr "/<computer/>"
這樣的形式就不成了,他要找的是 "computer"這個(gè)字符串,所以不可以。

echo hello worldcomputer|findstr ".*computer/>"
這樣就可以匹配了

所學(xué)知識的應(yīng)用:

@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 "
系統(tǒng)啟動(dòng)時(shí)間
"') 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


這個(gè)是我自己寫的,其實(shí)也沒有什么用就是把自己的東西串一下,從這段代碼中我學(xué)到了不少東西,在if的時(shí)候一定記得要在else

command加括號,還有就是^的使用,看看上面,它就是顯示它后面的符號,使它們失去功能,還有好多,呵呵,都在程序里啦。
還有就是pan斷大小的使用
其中,比較運(yùn)算符可以是:

equ - 等于
neq -
不等于
lss -
小于
leq -
小于或等于
gtr -
大于
geq -
大于或等于

在一行上寫上三個(gè)echo.相當(dāng)于空三行echo.&echo.&echo.這是正確的格式,就是空三行

SET /P verybat= 請選擇要進(jìn)行的操作:
IF /I "%verybat:~0,1%"=="1" GOTO 1
IF /I "%verybat:~0,1%"=="2" GOTO 2

@echo off
echo
正在準(zhǔn)備生成加密的jpg圖片

echo
請將要加密的圖片改名為
1.jpg
echo
請將要密語保存為
2.txt
echo
按任意鍵開始加密

pause
Copy 1.jpg/b + 2.txt/a 3.jpg
echo
加密結(jié)束

echo
程序?qū)⑸杉用軋D片
3.jpg
pause
以上是圖片加密的代碼,看看很簡單的吧呵呵

用到了copy的參數(shù)
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要復(fù)制的文件。
/A
表示一個(gè) ASCII 文本文件。
/B
表示一個(gè)二進(jìn)位文件。
/D
允許解密要?jiǎng)?chuàng)建的目標(biāo)文件
destination
為新文件指定目錄和/或文件名。
/V
驗(yàn)證新文件寫入是否正確。
/N
復(fù)制帶有非 8dot3 名稱的文件時(shí),
盡可能使用短文件名。
/Y
不使用確認(rèn)是否要改寫現(xiàn)有目標(biāo)文件
的提示。
/-Y
使用確認(rèn)是否要改寫現(xiàn)有目標(biāo)文件
的提示。
/Z
用可重新啟動(dòng)模式復(fù)制已聯(lián)網(wǎng)的文件。

命令行開關(guān) /Y 可以在 COPYCMD 環(huán)境變量中預(yù)先設(shè)定。
這可能會被命令行上的 /-Y 替代。除非 COPY
命令是在一個(gè)批文件腳本中執(zhí)行的,默認(rèn)值應(yīng)為

在改寫時(shí)進(jìn)行提示。

要附加文件,請為目標(biāo)指定一個(gè)文件,為源指定
數(shù)個(gè)文件(用通配符或 file1+file2+file3 格式)。

?

總結(jié)

以上是生活随笔為你收集整理的批处理的一些小技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。