我有一个我正在搜索的文本文件,如下所示:
ksdf 0 0 -4
as7d:S:asf 0 0 -4
kc:S:cd3 0 0 -2
asdk:S:s 0 0 6
lasd:S:dd 0 0
目前我的具体问题是搜索文件中的第1和第4个令牌。如果第四个标记是一个数字,一切都很好,但是当第四个标记为空时(如我的例子中的第5行),代码根本不起作用。您可以看到我想在%%B
变量中找到空白时返回三个星号。
注意:感谢用户LotPings,我使用findstr
命令只抓取以包含子串:S:
的字符串开头的行,只是为了澄清为什么那里有。 (即我的例子中的第1行不会被抓住。)
我正在使用:
setlocal enabledelayedexpansion
For /F "tokens=1,4" %%A in ('Findstr /b /r /c:"[^ ]*:S:" print.log') do (
set space="%%B"
if !space!=="" echo %%A ^*^*^* >> new.txt
)
exit
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
>new.txt (
For /F "tokens=1,4" %%A in ('Findstr /b /r /c:"[^ ]*:S:" print.log') do (
set "space=%%B"
if "!space!"=="" (echo %%A ^*^*^*) else (echo %%A %%B)
)
)
type new.txt
pause