我有一个我正在搜索的文本文件,看起来像:
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
目前,我的具体问题是在搜索文件以查找第一个和第4个令牌时。如果第四令牌是一个数字,则所有内容都可以很好地发送,但是当第四令牌为空白时(如我的示例中的第五行),代码根本不起作用。您可以看到我想在%%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
@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