![如何使用批处理从文本文件中获取特定文本的输出?](https://linux22.com/image/1609036/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%89%B9%E5%A4%84%E7%90%86%E4%BB%8E%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E7%89%B9%E5%AE%9A%E6%96%87%E6%9C%AC%E7%9A%84%E8%BE%93%E5%87%BA%EF%BC%9F.png)
我有一个名为的文本文件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
定义一组分隔标记的字符(默认值:SPACE和TAB);
因此您需要使用以下代码:
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