我是批处理脚本的新手并且有一个问题。我想知道是否可以按要求搜索.txt文件并获取指定的数据并复制到新的.txt文件中?
就像我有50行9位数和一堆其他废话我不需要他们可以说, “对于以1,2,3,4,5,6,7,8或9开头的任何行...取前9位并将它们复制到一个新文件中,对于文件中的所有行? “
我认为这比尝试删除所有其他内容更容易。如果你对如何做到这一点有任何了解,请告诉我!感谢。
以下是一行的示例:
123456789 @例如
我只需要从大约50行中提取9位数字。
答案 0 :(得分:1)
@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
如果该行是全数字但少于9个字符,则您没有指定要执行的操作。我选择报告该行。
答案 1 :(得分: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
答案 2 :(得分:0)
希望这有助于完成工作:
@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