重定向并应用文本文件

时间:2018-01-15 09:52:06

标签: batch-file

几周前我开始使用Batch编码,每天工作几个小时。

我正在编写一个脚本来自动启动和自动创建过时的文件。我觉得尝试“有趣”的事情会很好。

我要做的是让我的主脚本保存一个配置文件,其中包含批处理颜色代码,以便稍后/首次启动时调用,并将自身更改为先前保存的颜色代码。最好带有文本文件。

我尝试过使用全局变量的东西。我认为我的IT已禁用,因为我无法在脚本之间共享变量状态。我没有试过启用它。我还应该提到我们在Windows 7上。

我已经开始使用下面的示例代码创建colors.bat。在向用户询问应用于变量的颜色代码之后,我已将重定向应用于我的主脚本以保存文件。现在,在主脚本的第一次启动时调用此批处理文件,稍后我将添加一个语句来检查文件是否存在。

color 5e

相反,我更喜欢可以调用的文本文件,或者甚至是没有容器的文件来阻止后端编辑。

但是我似乎无法让我的脚本正确地在文本文件中应用代码。以下是未能应用颜色更改的示例。在“colors.txt”文件中,只是批量兼容的颜色代码“5e”,没有别的。

type colors.txt | color
echo Test

color <colors.txt
echo Test

上面的代码我也尝试过不同的空格位置。

我已经在这里看了几个小时,现在阅读批量和重定向以及其他任何有趣的事情。我试着将颜色代码作为文件名,然后尝试像“%~n1”这样的参数。我根本想不通。

我希望这一切都不会令人困惑。但我要重申一下,现在的脚本正常运行。我想使用.txt容器而不是.bat或更好,但根本没有容器。甚至可以启用全局变量,以最佳路线为准。我想在脚本开始时调用此文件以应用颜色代码。

如果您有任何其他问题,请与我们联系。 感谢。

1 个答案:

答案 0 :(得分:0)

这是相当直接的

@echo off
setlocal enabledelayedexpansion
if exist colors.txt (
    goto setcolor
) else (
    set /p color="Choose color: "
    echo !color! > colors.txt
    attrib colors.txt +r
    endlocal
    goto setcolor
)
:setcolor
for /F %%i in (colors.txt) do color %%i
echo Test
pause

上面的代码检查colors.txt是否存在,如果不存在,它会提示您选择首选颜色和背景颜色。将代码保存到文件然后进行设置,下次找到文件时,它只会设置颜色而不重新提示。我们还设置attrib +r以使文件为只读,如果您想阻止人们编辑它,可以采取一些方法。

编辑: enabledelayedexpansion执行cmd /?,您会看到

  

/ V:ON

     

使用!启用延迟环境变量扩展!作为           分隔符。例如,/ V:ON将允许!var!扩大           执行时变量var。 var语法扩展了变量           在输入时,这在FOR内部时是完全不同的           循环。