如何使用批处理从文本文件中获取特定文本的输出?

如何使用批处理从文本文件中获取特定文本的输出?

我有一个名为的文本文件file.txt,其中包含

---------- 123.TXT: 20

20我只喜欢在输出中得到那个。

为此我正在运行以下命令,

for /f "tokens=2 delims=3" %%i in (file.txt) do (echo %%i)
pause>nul

预期产出,

20

我得到的输出,

.TXT: 20

笔记 :该值 20 将在不同的文本文件中发生变化。它不是一个稳定的值。

答案1

你似乎误解了for /F

  • tokens定义要提取的标记的位置(默认值:1,表示第一个标记);
  • delims定义一组分隔标记的字符(默认值:SPACETAB);

因此您需要使用以下代码:

for /F "tokens=3" %%I in (file.txt) do echo %%I

如果文件名(123.txt)可能包含SPACEs其自身,则将代码更改为:

for /F "tokens=2 delims=:" %%J in (file.txt) do for /F %%I in (file.txt) do echo %%I

的内容file.txt似乎是命令的输出find /C---------- 123.TXT:。您可以通过更改命令行来避免前缀 ( ):

find /C [/I] [/V] "<string>" 123.txt > file.txt

到:

find /C [/I] [/V] "<string>" < 123.txt > file.txt

那么你以后就不需要再把它分割开来:

for /F %%I in (file.txt) do echo %%I

当然你不需要使用临时文件:

for /F %%I in ('find /C [/I] [/V] "<string>" ^< 123.txt') do echo %%I

相关内容