批处理脚本:搜索文件,提取号码,并复制到新文件(Batch Scripting:search fil

2019-10-20 12:13发布

我是新来的一批脚本和有问题。 我在想,如果有可能的需求来搜索文本文件,并采取指定的数据复制到一个新的txt文件?

就像如果我有50线与9位数字和一堆其他垃圾的,我不需要在他们之后,我可以说,“对于有1,2,3,4,5,6,7,8开头的任何行,或9 ...采取的第一个9个位数,并将它们复制到一个新的文件,文件中的所有行???”

我认为这将是比试图删除所有其他的东西更容易。 让我知道,如果你知道如何做到这一点的东西! 谢谢。

这里有一个什么行类似的例子:
123456789 @例子
而我只需要大约50本线抽取9位数字。

Answer 1:

您可以使用FINDSTR过滤掉不以9位数字开头的所有行。 然后FOR / F可以逐行读取结果,线。 变量被设置,并且一个子操作只是保留了第一9位数字。

@echo off
setlocal enableDelayedExpansion
(
  for /f %%A in (
    'findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" yourFile.txt'
  ) do (
    set "ln=%%A"
    echo !ln:~0,9!
  )
)>newFile.txt


Answer 2:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
(
FOR /f "delims=" %%a IN (q24824079.txt) DO (
 SET "line=%%a"
 REM set DIGITS to the first 9 characters of LINE
 SET "digits=9!line:~0,9!"
 FOR /L %%z IN (0,1,9) DO SET "digits=!digits:%%z=!"
 IF NOT DEFINED digits ECHO(!line:~0,9!
)
)>newfile.txt

GOTO :EOF

我用了一个名为q24824079.txt含有用于我的测试。 产生newfile.txt

你没有specfy做什么,如果行是全数字,但少于9个字符。 我选择了报告线。



Answer 3:

希望这有助于完成工作:

@echo off
setlocal enabledelayedexpansion
for /f %%e in (emails.txt) do (
    echo Email: %%e
    for /f "delims=@ tokens=1" %%b in ("%%e") do (
        set BEGIN=%%b
        echo Name: !BEGIN!
        set FIRST=!BEGIN:~0,1!
        echo First char: !FIRST!
        set /a NUMERIC=!FIRST!+0
        echo Converted to number: !NUMERIC!
        if !FIRST!==!NUMERIC! echo Yippieh!
        echo.
    )
)

取而代之的echo Yippieh! 追加电子邮件( %%e )到一个文件中,例如像

echo %%e >> output.txt


文章来源: Batch Scripting:search file, extract numbers, and copy into new file