搜索文本文件并仅将大于某个绝对值的数字发送到文本文件?

时间:2017-03-06 23:15:23

标签: batch-file for-loop cmd

我有一个我正在搜索的文本文件,如下所示:

  

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

1 个答案:

答案 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