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

[文本处理] 批处理如何从文本中提取内容并创建指定内容和文件名的新的文本?

Name        PlantTag        Description        Type        Choice        LowLimit        HighLimit        Unit        SysID
rf0GEW01        0GEW130JA        Disconnector        DG        OPEN CLOSE        OPEN        CLOSE                0GEW
rf0GEW02        0GEW153JS        Disconnector        DG        OPEN CLOSE        OPEN        CLOSE                0GEW
rf0LBM05        0LBM001JA        Incoming breaker from 0LKY001TB busbar.        DG        OPEN CLOSE        OPEN        CLOSE                0LBM
rf0LBO08        0LBO507JA        Incoming breaker from LBO003RD Charger.        DG        OPEN CLOSE        OPEN        CLOSE                0LBO
...
如上例文本中,通过批处理文件,分别安每行最后一个词组创建以该名字命名的文本,并将其对应的内容填写进去,实现结果如下:
0GEW.txt
rf0GEW01        0GEW130JA        Disconnector        DG        OPEN CLOSE        OPEN        CLOSE                0GEW
rf0GEW02        0GEW153JS        Disconnector        DG        OPEN CLOSE        OPEN        CLOSE                0GEW

0LBM.txt
rf0LBM05        0LBM001JA        Incoming breaker from 0LKY001TB busbar.        DG        OPEN CLOSE        OPEN        CLOSE                0LBM

0LBO.txt
rf0LBO08        0LBO507JA        Incoming breaker from LBO003RD Charger.        DG        OPEN CLOSE        OPEN        CLOSE                0LBO

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (测试文本.txt) do (
  3.   for %%b in (%%a) do set "name=%%b"
  4.   echo %%a>>!name!.txt
  5. )
复制代码

TOP

  1. gawk -F "  +" "$8{print $0>$8\".txt\"}" urfile
复制代码

TOP

回复 3# asnahu


    什么意思,不对吧

TOP

回复 2# apang


    太给力了。非常感谢

TOP

回复 2# apang


   补充一个问题:我希望能在每个新创建的文件中的第一行都有这么一句:Name        PlantTag        Description        Type        Choice        LowLimit        HighLimit        Unit        SysID,即测试文件中的第一行。请帮忙实现以下。
再一次感谢!~

TOP

回复 4# zxsg_521

在论坛不只是问问题,更是学习:http://leeon.me/upload/other/awk.html
1

评分人数

    • CrLf: 同感,好链接PB + 6

TOP

回复 6# zxsg_521

将第二行改成
for /f "skip=1 delims=" %%a in (测试文本.txt) do (

TOP

回复 8# apang


    非常感谢,但和之前没有变化。请确认一下,谢谢

TOP

回复 8# apang


    我不是要跳过第一行,我是希望在新创建的文件中都保留源文件的第1行。例如
0LBM.txt
Name        PlantTag        Description        Type        Choice        LowLimit        HighLimit        Unit        SysID
rf0LBM01        0LBM103JA        Incoming breaker from 0LBM001BT battery.        DG          OPEN CLOSE        OPEN        CLOSE                0LBM
rf0LBM02        0LBM109JS        Breaker between 0LBM001TB_A bus and 0LBM001TB_B bus.        DG          OPEN CLOSE        OPEN        CLOSE                0LBM

ACO.txt
Name        PlantTag        Description        Type        Choice        LowLimit        HighLimit        Unit        SysID
rfACO003CC        301PO/302PO        ACO PUMPS SELECT        DG          NORMAL 301PO 302PO        0        2                ACO
rfACO01        ACO101VD        CEX to 301PO priming supply valve        VR                0        1                ACO

TOP

回复 10# zxsg_521

哦,我理解错了,试试看(测试文本.txt的第一行为Name        PlantTag        Description        Type        Choice LowLimit        HighLimit        Unit        SysID)
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (测试文本.txt) do (
  3.   if defined str (
  4.     for %%b in (%%a) do set "name=%%b"
  5.     if exist !name!.txt (echo,%%a>>!name!.txt
  6.     ) else (echo,!str!&echo,%%a)>!name!.txt
  7.   ) else set "str=%%a"
  8. )
复制代码

TOP

回复 11# apang


    太强了,非常好。

TOP

在前面直接加 echo 你的内容>123.txt
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表