找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28970|回复: 4

[文本处理] 批量提取N个文本的指定内容行数并加入序列

[复制链接]
发表于 2020-1-19 02:30:44 | 显示全部楼层 |阅读模式
这是之前ivor大佬帮助别人解决 “批量提取N个文本的指定内容行数”的代码
------------------------------------------------------
变量参考例子:
num=1..3    提取2(正数)至4(正数)行内容
num=3    提取第4(正数)行内容
num=-3    提取-3(倒数)行内容
num=-1..-3    提取-1(倒数)至-3(倒数)行内容
num=-1..3    提取-1(倒数)和 1 至 4(正数)行内容   慎用:不建议
num=1,5,9    提取2,6,10(正数)行内容
num=-1,-5,-9    提取-1,-5,-9(倒数)行内容

代码内容
  1. <# :
  2. @echo off
  3. rem 增强代码兼容性,代码保存为 ".bat"、".cmd"、".ps1"均可执行
  4. powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  5. more +8 "%~f0" >"%~dpn0.ps1"
  6. powershell -File "%~dpn0.ps1"
  7. del "%~dpn0.ps1" & pause & exit /b
  8. #>
  9. del 输出结果.txt -ErrorAction "SilentlyContinue"

  10. $num = 1..3

  11. dir *.txt | foreach {
  12.     $line = get-content "$_"
  13.         foreach ($l in $line[$num])
  14.         {
  15.             -Join($_.Name, " ", $l) | out-file -Append "输出结果.txt"
  16.         }
  17. }
复制代码
----------------------------------------------------------

我有一个额外的需求
输出结果的时候能否加一个序列

比如我提取的是文档的前两行,目前代码输出的结果如下:
  - name: Fast
    uuid: "57e0cb4d-eae5-48ec-8071-149dc2b3ea4q"
  - name: Fast
    uuid: "96e0cb4d-eare-4802-8091-149dc2b309e0"
想让输出带序列的结果,例如:
  - name: Fast01
    uuid: "57e0cb4d-eae5-48ec-8071-149dc2b3ea4q"
  - name: Fast02
    uuid: "96e0cb4d-eare-4802-8091-149dc2b309e0"

请问大佬如果修改一下实现这样的效果呢,求指点,不胜感激
发表于 2020-1-20 21:51:50 | 显示全部楼层
本帖最后由 went 于 2020-1-20 21:53 编辑

一行输出本来就只有一行,你怎么有两行
2020-01-20_214654.png
上面的name
发表于 2020-1-20 22:10:29 | 显示全部楼层
如果格式过于严格可以用find类进行判断,需要延迟变量
要求行条件和顺序,如果不同请以你的文本内容,if判断值需更改默认数字四位超限自行更改算法
Name:
UUID:
set "n=-1"
for /f "delims=" %%i in ('type "%~f1"')do (
for /f "tokens=1,* delims=:" %%j in ("%%i")do if /i "%%~j"=="Name" (
  set/a "n+=1"
  set "#=000000000000!n!"
  set "#=!#:~-4!"
  set "#temp=%%j: %%k!#!"
)else if /i "%%~j"=="UUID" (
  echo,!#!        !#temp!
  echo,!#!        %%i
)else (rem 这里是其它值
  echo,!#!        %%i
)
)
 楼主| 发表于 2020-9-9 12:29:26 | 显示全部楼层
回复 3# /zhqsystem/zhq


    感谢大佬回复,萌新一个,听的云里雾里。。。
发表于 2020-9-9 15:23:01 | 显示全部楼层
回复 4# yihaotongtiam


    既然用ps 那直接对象化,然后添加一个序号属性。剩下的想怎么玩就怎么玩。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 03:53 , Processed in 0.029145 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表