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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows批处理文件/获取一行中的最后一个单词相关的知识,希望对你有一定的参考价值。

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

我有一个名为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和输出之间的关系。

答案

这是因为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

以上是关于windows批处理文件/获取一行中的最后一个单词的主要内容,如果未能解决你的问题,请参考以下文章

在 bash/sed/awk 中提取文件的最后一个单词

在 UITextview 中的单词中间点击空格时光标移动最后一行

如何在该行某处某处的某一行中的特定字符串之后从文本文件中获取一个数字?

如何使用 Windows 批处理文件遍历文本文件中的每一行?

shell如何读取一个文件的最后一行

使用批处理删除文本文件中特定单词之前的文本