我刚开始批量编写脚本,我有一个问题。我想知道是否可以根据需求搜索.txt文件,并获取指定的数据并复制到新的.txt文件中?
比如,如果我有50行有9位数字的行,还有一堆我不需要的废话,我能说:“对于任何以1,2,3,4,5,6,7,8开头的行,还是9...take前9位数,并将它们复制到一个新文件中,用于文件中的所有行?”
我觉得这比尝试删除其他东西更容易。如果你知道怎么做,请告诉我!谢谢。
下面是一行内容的示例:
123456789@示例
我只需要从大约50行中提取出9位数。
发布于 2014-07-18 21:26:06
您可以使用FINDSTR筛选出不以9位开始的所有行。然后对于/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发布于 2014-07-18 14:13:35
@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个字符,则您没有猜测该怎么办。我选择了报告这句话。
发布于 2014-07-18 13:02:12
希望这有助于完成任务:
@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.txthttps://stackoverflow.com/questions/24824079
复制相似问题