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

Batch file 搜索文本文件并仅向文本文件发送大于某个绝对值的数字?,batch-file,for-loop,cmd,Batch File,For Loop,Cmd,我有一个我正在搜索的文本文件,看起来像: KSDF0-4 as7d:S:asf 0-4 kc:S:cd3 0-2 asdk:S:S06 lasd:S:dd0 目前,我的具体问题是在文件中搜索第一个和第四个令牌时。如果第四个令牌是一个数字,那么一切都会正常发送,但是当第四个令牌为空时(如我的示例中的第五行),代码根本不起作用。您可以看到,当它在%%B变量中找到空白时,我想返回三个星号 注意:多亏了用户LotPings,我使用findstr命令只获取以包含子字符串:S:的字符串开头的行,只是为了澄清

我有一个我正在搜索的文本文件,看起来像:

KSDF0-4

as7d:S:asf 0-4

kc:S:cd3 0-2

asdk:S:S06

lasd:S:dd0

目前,我的具体问题是在文件中搜索第一个和第四个令牌时。如果第四个令牌是一个数字,那么一切都会正常发送,但是当第四个令牌为空时(如我的示例中的第五行),代码根本不起作用。您可以看到,当它在
%%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

发布的代码对我来说非常有用。
>new.txt(如果“%%B”==”(echo%%A^^^^*)else(echo%%A%%B))
为什么要将for元变量指定给环境变量?我意外地将“:S:”更改为其他内容,这是我的问题!谢谢你的朋友们@Squashman我最终将使用
set space=,比较
%%b
中存储的值!空格:-=
删除负片,然后使用
if!错误等级==0
作为一个开关,用于将绝对值(一种情况下添加负数,另一种情况下将
空格
值作为正数回显)与静态数字(如
if!空间全球技术法规3回声%%a-!空间!>>new.txt
如果为负数。这对我还不起作用,但也许我错过了一些明显的东西,idk。
@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