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

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

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

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

pause>nul)

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

echo "test&pause|sort

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

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

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

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

set /p=^"""

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

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

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

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

set /a \test1=123,test2=234

(@echo off

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

)|sort

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

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

::當(dāng)存在123文件夾時(shí),創(chuàng)建234文件夾,否則刪除345文件夾,無論結(jié)果如何,接下來都會逐屏顯示當(dāng)前目錄樹。重點(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

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

待續(xù)...

首頁 上一頁 [1] [2] [3]  下一頁 尾頁

文章評論

軟件按字母排列: 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