2014-12-05 73 views
0

我正嘗試使用/ | \字符在批處理文件中創建一些多行,多色ascii藝術。爲什麼我的特殊字符在引用批處理中不被忽略?

但是,我認爲我的批處理scrip讀取它們作爲命令而不是僅輸出文本。

*這是基於一些着色代碼,我發現在這裏:Batch Color per line

@echo off 
SETLOCAL EnableDelayedExpansion 
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
    set "DEL=%%a" 
) 
echo TEST 

call :ColorText 0a "################################################################################################################################################################" 
call :ColorText 1b "^/^|^\" 
call :ColorText 0a "################################################################################################################################################################" 

goto :eof 

:ColorText 
echo off 
<nul set /p ".=%DEL%" > "%~2" 
findstr /v /a:%1 /R "^$" "%~2" nul 
del "%~2" > nul 2>&1 
goto :eof 

特殊字符有^在他們面前,他們是在引號。

我怎樣才能得到這個打印我的Ascii藝術的這些特殊字符?

這裏是輸出我得到:

F:\>test 
TEST 
################################################################################ 
################################################################################ 
The system cannot find the path specified. 
FINDSTR: Cannot open ^^/^^|^^" nul 
################################################################################ 
################################################################################ 
F:\> 
+0

您不能使用此方法輸出文件名中不允許的字符。 – 2014-12-05 15:19:57

+0

然後,有什麼替代方法可以在包含這些特殊字符的文本上創建多種顏色? – level42 2014-12-05 15:24:13

+0

在您的初始鏈接答案後,有[this](http://stackoverflow.com/a/5344911/2861476)。 *一年後閱讀*部分 – 2014-12-05 15:25:53

回答

0

您正在使用過時的代碼。 jeb updated his code,然後dbenham updated jeb's update。試試這個:

@echo off 
setlocal 

call :initColorPrint 

call :ColorPrint 0a "################################################################################################################################################################" 
call :ColorPrint 1b "/|\" 
call :ColorPrint 0a "################################################################################################################################################################" 


call :cleanupColorPrint 

exit /b 

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 

:colorPrint Color Str [/n] 
setlocal 
set "str=%~2" 
call :colorPrintVar %1 str %3 
exit /b 

:colorPrintVar Color StrVar [/n] 
if not defined %~2 exit /b 
setlocal enableDelayedExpansion 
set "str=a%DEL%!%~2:\=a%DEL%\..\%DEL%%DEL%%DEL%!" 
set "str=!str:/=a%DEL%/..\%DEL%%DEL%%DEL%!" 
set "str=!str:"=\"!" 
pushd "%temp%" 
findstr /p /A:%1 "." "!str!\..\x" nul 
if /i "%~3"=="/n" echo(
exit /b 

:initColorPrint 
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do set "DEL=%%a" 
<nul >"%temp%\x" set /p "=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%.%DEL%" 
exit /b 

:cleanupColorPrint 
del "%temp%\x" 
exit /b