當(dāng)前位置:首頁(yè)文章首頁(yè) IT學(xué)院 IT技術(shù)

批處理(bat)學(xué)習(xí)的一些總結(jié)

作者:  來(lái)源:  發(fā)布時(shí)間:2012-1-11 14:01:50  點(diǎn)擊:
(del %0

echo 能找到我,就給你發(fā)糖

pause>nul)

::括號(hào)里的內(nèi)容被理解成一個(gè)語(yǔ)塊,運(yùn)行其中的命令時(shí)不需從文件讀取,所以就算刪除自身仍可運(yùn)行。

echo "test&pause|sort

::當(dāng)一行命令中存在奇數(shù)個(gè)雙引號(hào)時(shí),將會(huì)轉(zhuǎn)義其后所有本行字符

for /f tokens^=2delims^=^" %%a in ("123"test"456") do echo %%a

::通過(guò)對(duì)特殊字符的轉(zhuǎn)義,在for中用雙引號(hào)當(dāng)分隔符

for /f tokens^=2delims^=^" %%a in (^"123"456") do echo %%a

set /p=^"""

::當(dāng)一組字符串中含有奇數(shù)個(gè)雙引號(hào)時(shí)經(jīng)常會(huì)出錯(cuò),解決方法是轉(zhuǎn)義其中的一個(gè),保持有效的雙引號(hào)成對(duì),可是引號(hào)對(duì)之內(nèi)無(wú)法用轉(zhuǎn)義符對(duì)其轉(zhuǎn)義,所以轉(zhuǎn)義符要放在引號(hào)對(duì)之外使用

set /a "1/(%random%%%2)"&&set com=||set com=/f "tokens=2"

for %com% %%a in ("123 234 345") do echo %%a

::假如隨機(jī)值為偶數(shù),則顯示指定字符串第二段,否則顯示整段。這里用變量來(lái)定制命令,會(huì)比常規(guī)辦法(一條if和一條命令對(duì)應(yīng))更靈活和省事,但是要注意的是,變量延遲是在解釋語(yǔ)塊之后進(jìn)行,所以這里的%com%不能使用變量延遲。

set /a \test1=123,test2=234

(@echo off

for /f "tokens=1* delims==" %%a in ('set\') do echo %%b

)|sort

::sort對(duì)for命令的輸出進(jìn)行排序,那個(gè)@echo off并非多余,因?yàn)橥ǖ乐暗娜羰钦Z(yǔ)塊(for、if或者被成對(duì)括號(hào)包起來(lái)的語(yǔ)句),該語(yǔ)塊中的內(nèi)容將會(huì)以cmd /c的形式運(yùn)行,此時(shí)的回顯是打開(kāi)的,而變量延遲則是默認(rèn)關(guān)閉的。

dir /ad 123\&&md234||rd 345&tree /f|more

::當(dāng)存在123文件夾時(shí),創(chuàng)建234文件夾,否則刪除345文件夾,無(wú)論結(jié)果如何,接下來(lái)都會(huì)逐屏顯示當(dāng)前目錄樹(shù)。重點(diǎn)是管道命令、邏輯連接符的靈活運(yùn)用

2、句柄的妙用

@echo off 2>nul 3>nul

這個(gè)命令不存在...

echo 錯(cuò)誤回顯呢?

pause

::句柄備份,可用于屏蔽所有正確或錯(cuò)誤回顯

cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt

::用一個(gè)命令創(chuàng)建9個(gè)文件,效率自然提高了

@echo off

(for /r %%a in (*.*) do del /f /s "%%~nxa" 3>>"%%a") 2>nul 4>>%0

pause

::利用寫(xiě)入句柄會(huì)占用文件的特性實(shí)現(xiàn)高效刪除重復(fù)文件

待續(xù)...

文章評(píng)論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z