2011-09-03 18 views
1

我有一个批处理脚本,可以在命令提示符的同一行显示两种或两种以上颜色的文本。 (下)如何使用命令行参数来控制打印多色文本的批处理程序?

@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 say the name of the colors, don't read 

call :ColorText 0a "blue" 
call :ColorText 0C "green" 
call :ColorText 0b "red" 
echo(
call :ColorText 19 "yellow" 
call :ColorText 2F "black" 
call :ColorText 4e "white" 
pause 
goto :eof 

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

但是,通过用记事本编辑批处理文件,必须事先在脚本中输入文本。我想能够只需打开命令提示和输入像:

cecho /blue hello world! 

cecho blue "hello world!" 

或简单的东西,其中i可以提供颜色(优选为一个字符串不是一种颜色代码)和文本(带或不带引号)。


我不知道这是任何对你有用,但它是可以节省这部分脚本:

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

(摘自“:ColorText”去年底脚本) 并将其保存为“C:\ windows \ system32”中的“ColorText.bat”。然后在脚本中的另一半,你到处看到:

call :ColorText 

将其更改为:

call ColorText 

(省略冒号) 并保存脚本colors.bat在“C:\ Windows \ System32" 下。然后打开命令提示符并输入“颜色”。这就是我想要的功能;没有额外的命令,安装脚本,文件路径;只是一个简单的一个或两个字的功能,在背景中发生所有这些杂乱的代码(在视线之外)。然而,上述想法仍然不会让我从命令提示符指定我自己的文本或颜色....任何想法?

+3

不要把自己的文件系统位置。您可以更改'PATH'环境变量以添加驻留在配置文件中的位置。 – Joey

回答

2

编辑:取3

创建的文件夹C:\Utilities。将此文件夹添加到Path环境变量中,以便Windows在其中查找其他脚本和命令。

  1. 打开控制面板,系统,高级系统设置(或Windows XP中的“高级”),环境变量。
  2. 在“系统变量”列表中,选择“路径”变量。
    不要把这些下一步搞乱!
  3. 按编辑。
  4. 将光标放在行的末尾,并确保没有选择文本。
  5. 添加文字;C:\Utilities,包括分号。不要删除任何其他文字。
  6. 按OK。
    再次呼吸容易。
  7. 根据需要按OK键多次关闭所有窗口。

将脚本放在:ColorText标签后面并保存到C:\Utilities\cecho.bat。在echo off之前放置一个@,以防止echo off在脚本中出现。

CEcho.bat

@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" 
) 
<Nul Set /p ".=%DEL%" > "%~2" 
FindStr /v /a:%1 /R "^$" "%~2" Nul 
Del "%~2" > Nul 2>&1 
EndLocal 

现在你可以从任何命令行或脚本使用此命令。用法:

CEcho color "text" 

编辑:在回答您的评论:

可以通过插入以下行并更换FindStr线使用的颜色的单词:

Set Color=%1 
If %1==blue Set Color=9 
If %1==red Set Color=C 
etc... 
FindStr /v /a:%Color% /R "^$" "%~2" Nul 

现在你可以类型:

CEcho red "apple" 
CEcho blue "water" 
CEcho A "grass" 
CEcho 6 "dirt" 
CEcho 26 "tree" 

不是e颜色字是区分大小写的。

+0

复制了你的上面的代码,将它保存为C:\ windows \ system32 \ cecho.bat打开命令行并键入“cecho fc hello”并且什么也没有。我也尝试了几种不同的颜色(字符串格式和十六进制数字格式)并且什么都没有。 – daniel11

+0

手:对不起,当我发布那条评论时,我没有在这个问题上读到......我现在把它转移到了这个问题上。道歉。 – Joey

+0

所以......任何其他的想法? – daniel11

1

您可以使用批处理参数%1%2,...,N,作为参数的颜色和内容

cecho 0a "hello world!"

@echo off 
call :ColorText %1 "%~2" 
... 

如果你想使用颜色名称,您必须将它们转换为相应的编号。

cecho blue "hello"

@echo off 
if "%1"=="red" set color=0c 
if "%1"=="blue" set color=0b 
if ... 
call :ColorText %color% "%~2" 
+0

所以只是为了确保我得到它的权利,什么将最后的脚本是为cecho和什么是语法 – daniel11

+0

它debpenddens你的喜好,如果你想使用颜色名称采取第二个片段,并添加所有颜色名称 – jeb

+0

说if我只想输入“cecho red”hello“”,最后的剧本会是什么?我无法让它起作用... – daniel11

相关问题