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

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

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

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

pause>nul)

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

echo "test&pause|sort

::當(dāng)一行命令中存在奇數(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ù)個雙引號時經(jīng)常會出錯,解決方法是轉(zhuǎn)義其中的一個,保持有效的雙引號成對,可是引號對之內(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

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

set /a \test1=123,test2=234

(@echo off

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

)|sort

::sort對for命令的輸出進行排序,那個@echo off并非多余,因為通道之前的若是語塊(for、if或者被成對括號包起來的語句),該語塊中的內(nèi)容將會以cmd /c的形式運行,此時的回顯是打開的,而變量延遲則是默認(rèn)關(guān)閉的。

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

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

2、句柄的妙用

@echo off 2>nul 3>nul

這個命令不存在...

echo 錯誤回顯呢?

pause

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

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

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

@echo off

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

pause

::利用寫入句柄會占用文件的特性實現(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