我有一个名为的文本文件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