如何在Windows中使用命令行函数仅选择txt文件中的数字

如何在Windows中使用命令行函数仅选择txt文件中的数字,windows,cmd,Windows,Cmd,我有一个文件具有以下格式: <somecharacters> 1 <somecharacters> <somecharacters> 2 <somecharacters> <somecharacters> 4 <somecharacters> <somecharacters> 9 <somecharacters> 1 2. 4. 9 我需要解析出最大的数字。我尝试过使用FINDSTR和FIND,但

我有一个文件具有以下格式:

<somecharacters> 1 <somecharacters>
<somecharacters> 2 <somecharacters>
<somecharacters> 4 <somecharacters>
<somecharacters> 9 <somecharacters>
1
2.
4.
9

我需要解析出最大的数字。我尝试过使用
FINDSTR
FIND
,但对Windows命令行没有足够的经验…

如果文件中的所有行都是这样一致的格式,那么这应该可以工作(我使用的是属性而不是内部文本)

@echo关闭
setlocal enableDelayedExpansion
设置maxPort=0

对于/f“tokens=6 delims=这在Perl或Python之类的东西中是微不足道的。FIND和FINDSTR标识哪些行包含搜索字符串,但它们对于解析子字符串没有用处。
可以包含空格吗?例如,可以包含html代码。是的,perl和python应该做这项工作。。。我想我必须这样做。所以答案是肯定的——可能会有额外的空间。这使事情复杂化了。您需要更具体地了解每行的格式以及识别要解析的数字的规则。毕竟,
中可能还有其他数字(除非您另有说明)。即使使用perl,除非您提供更具体的需求,否则没有人能够提供可靠的解决方案。抱歉,请注意,这行代码是这样的:
  • ,因此没有数字,例如,只解析出7433就足够了。每一行都有这种格式,所以comand可以重复它直到最后一行,记住最后一个数字,它总是最大的,我只是不知道如何排除html字符。非常感谢!那真的很酷。与此同时,我设法找到了一个解决办法,使用FINDSTR过滤掉行,使用linux中的SED,通过安装gnuwin32,只解析数字,然后使用更简单的FOR版本,实际上是一个数字接一个数字,停在最后一个,幸运的是最大值,是的。但是谢谢,我会试试你的解决方案!
    @echo off
    setlocal enableDelayedExpansion
    set maxPort=0
    for /f "tokens=6 delims=<./ " %%N in (test.txt) do (
      if %%N gtr !maxPort! set maxPort=%%N
    )
    echo maxPort=%maxPort%