0
我只是上網查找批量的函數,它使文本着色。這是代碼:這個批處理代碼到底做了什麼?
:Color
:: v20 deprecated.
:: Arguments: hexColor text [\n]
:: Supported in windows XP, 7, 8.
:: In XP extended ascii characters are printed as dots.
:: For print quotes, use empty text.
SetLocal enableExtensions EnableDelayedExpansion
Set "Text=%~2"
If Not Defined Text (Set Text=^")
Subst `: "!Temp!" >Nul &`: &Cd \
If Not Exist `.7 (
Echo(|(Pause >Nul &Findstr "^" >`)
Set /P "=." >>` <Nul
For /F "delims=;" %%# In (
'"Prompt $H;&For %%_ In (_) Do Rem"') Do (
Set /P "=%%#%%#%%#" <Nul >`.3
Set /P "=%%#%%#%%#%%#%%#" <Nul >`.5
Set /P "=%%#%%#%%#%%#%%#%%#%%#" <Nul >`.7))
Set /P "LF=" <` &Set "LF=!LF:~0,1!"
For %%# in ("!LF!") Do For %%_ In (
\/:) Do Set "Text=!Text:%%_=%%~#%%_%%~#!"
For /F delims^=^ eol^= %%# in ("!Text!") Do (
If #==#! SetLocal DisableDelayedExpansion
If \==%%# (Findstr /A:%~1 . \` Nul
Type `.3) Else If /==%%# (Findstr /A:%~1 . /.\` Nul
Type `.5) Else (Echo %%#\..\`>`.dat
Findstr /F:`.dat /A:%~1 .
Type `.7))
If "\n"=="%~3" (Echo()
Goto :Eof
任何人都可以請解釋這是如何工作的?我真的很想知道每個短語做了什麼以及它如何參與打印彩色文本。
P.S.我知道那裏發生的大部分事情,我只是不知道它是如何使控制檯以彩色打印文本以及爲什麼會在%Temp%目錄中創建文件。
我想說明一步一步,容易理解請。
謝謝!
'findstr/a'是着色輸出的實際命令,其他所有內容都爲它準備一個文件。代碼是故意隱晦的,因爲很明顯,作者喜歡這種代碼「風格」,所以通過簡單地用適當的縮進以可讀的方式重新格式化它,然後閱讀'prompt'上的幫助,和'findstr'。順便說一句,在dostips上有一個[更新的版本23](http://www.dostips.com/forum/viewtopic.php?p=41155#p41155)。 – wOxxOm
謝謝,如果您將它發佈爲答案,我會給你+1。附:我知道有一個新版本,但速度較慢,所以我不使用它。 – KKZiomek
我以爲(還在想)別人可能會給你一個真正的擴展答案,你希望... – wOxxOm