[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

这是之前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"

请问大佬如果修改一下实现这样的效果呢,求指点,不胜感激

本帖最后由 went 于 2020-1-20 21:53 编辑

一行输出本来就只有一行,你怎么有两行

上面的name
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

如果格式过于严格可以用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
)
)
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 3# /zhqsystem/zhq


    感谢大佬回复,萌新一个,听的云里雾里。。。

TOP

回复 4# yihaotongtiam


    既然用ps 那直接对象化,然后添加一个序号属性。剩下的想怎么玩就怎么玩。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

返回列表