windows批处理文件/获取一行中的最后一个单词

时间:2018-02-28 15:03:58

标签: batch-file

我在批处理文件中有一个奇怪的情况。

我有一个名为state.txt的txt文件,其中包含以下行:

State          ON

我需要读取“ON”字样(它也可以是OFF),所以我使用以下简单的批处理文件:

@echo off
for /f "tokens=2" %%a in (state.txt) do set word1=%%a
echo %word1%

执行批处理文件时,我没有得到任何输出,但当我将“ON”或“OFF”字改为任何其他单词时,它会显示出来。

我在这里很困惑! ON / OFF和输出之间的关系是什么。

1 个答案:

答案 0 :(得分:2)

这是因为ONOFFECHO的特殊输入,可以打开或关闭命令回显。考虑一下:

SET VAR1=OFF
ECHO %VAR1%
SET VAR2=ON
ECHO %VAR2%
SET VAR3=TEST
ECHO %VAR3%

这将输出:

C:\Windows>SET VAR1=OFF
C:\Windows>ECHO OFF
C:\Windows>SET VAR3=TEST
C:\Windows>ECHO TEST
TEST

你没有看到VAR2 - 部分,因为命令回显是用VAR1启用的。您看到VAR3 - 部分,因为VAR2再次打开它。

如果您想回显ONOFF字样,可以在ECHOONOFF之间加一个点:

C:\Windows>SET VAR4=ON
C:\Windows>ECHO.ON
ON
C:\Windows>SET VAR5=OFF
C:\Windows>ECHO.OFF
OFF