Board logo

标题: [文本处理] 批处理如何将多个txt文本里指定列的内容相同的行分别输出到以该内容命名的文本里 [打印本页]

作者: nihaoareyou    时间: 2016-11-4 09:06     标题: 批处理如何将多个txt文本里指定列的内容相同的行分别输出到以该内容命名的文本里

批处理怎样根据txt某列相同内容拆分到不同的文件?
很多个TXT文件,格式如下:
井名        地区        样品深度        层位        类型        重矿物名称        重矿物含量(%)        样品编号        序号        备注
W11        黄龙        2601.17        K        源        钛铁矿        8.7        125156        3       
W11        黄龙        2601.17        K        源        白钛石        5.2        125156        4       
W11        黄龙        2601.17        K        源        锆石        0.9        125156        5       
W11        黄龙        2601.17        K        源        石榴石        9.6        125156        16       
W11        黄龙        2601.17        K        生        黄铁矿        52.2        125156        33       
W11        黄龙        2601.17        K        生        重晶石        19.1        125156        34       
W11        黄龙        2601.17        K        源        电气石        4.3        125156        12       
W11        黄龙        2602.79        K        源        钛铁矿        4.1        125156        3       
W11        黄龙        2602.79        K        源        白钛石        29.3        125156        4       
W11        黄龙        2602.79        K        源        锆石        16.9        125156        5       
W11        黄龙        2602.79        K        源        榍石        0.4        125156        6       
W11        黄龙        2602.79        K        源        板钛矿        1.7        125156        8       
W11        黄龙        2602.79        K        生        重晶石        1.2        125156        34       
W11        黄龙        2602.79        K        源        十字石        0.4        125156        15       
W11        黄龙        2602.79        K        源        石榴石        19.4        125156        16       
W11        黄龙        2602.79        K        源        尖晶石        1.2        125156        32       
W11        黄龙        2602.79        K        生        黄铁矿        24.4        125156        33       
W11        黄龙        2602.79        K        源        电气石        0.8        125156        12

我想把第6列拆分,相同矿物名称的放在一个txt里面,并以相应的矿物名称命名
【万分感谢】
作者: nihaoareyou    时间: 2016-11-4 09:50

大神 大神 求帮助
作者: Batcher    时间: 2016-11-4 10:37

  1. @echo off
  2. for /f "skip=1 tokens=1-10" %%a in ('type "源数据.txt"') do (
  3.     if not exist "%%f.txt" (
  4.         > "%%f.txt" echo 井名 地区 样品深度 层位 类型 重矿物名称 重矿物含量(%) 样品编号 序号 备注
  5.     )
  6.     >> "%%f.txt" echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j
  7. )
复制代码

作者: nihaoareyou    时间: 2016-11-4 14:15

回复 3# Batcher

测试不成功啊,另外是有很多个txt文件
作者: Batcher    时间: 2016-11-4 14:18

回复 4# nihaoareyou


    别着急,先不说多个文件的事情。不成功是指有什么报错信息吗,具体表现是什么呢?
作者: nihaoareyou    时间: 2016-11-4 14:20

回复 5# Batcher


    就是点完运行后,没有啥操作,文件跟原来一样
作者: Batcher    时间: 2016-11-4 14:23

回复 6# nihaoareyou


3楼代码保存为 test.bat 并且放到C盘根目录
源数据.txt 也放到C盘根目录
打开一个 CMD 窗口,然后输入 C:\test.bat
回车执行
看看是否有报错信息
作者: nihaoareyou    时间: 2016-11-4 14:31

回复 7# Batcher


    提示“此时不应有f”。。。。
作者: Batcher    时间: 2016-11-4 14:34

回复 8# nihaoareyou


    把第一行的 @echo off 改成 @echo on 重新执行 test.bat 把结果发出来看看
作者: nihaoareyou    时间: 2016-11-4 14:44

回复 9# Batcher
作者: 回家路上    时间: 2016-11-4 15:03

  1. @echo off & setlocal enabledelayedexpansion
  2. set srcDir=%~dp0src
  3. set targetDir=%~dp0target
  4. mkdir "%targetDir%" 2>nul
  5. for /f "delims=" %%f in ('dir /a-d /s /b "%srcDir%"') do (
  6. set /p firstLine=<"!%%f!"
  7. for /f "skip=1 delims=" %%i in ('type "%%f"') do (
  8. for /f "tokens=6 delims= " %%j in ("%%i") do (
  9. set targetFile=%targetDir%\%%j.txt
  10. if not exist "!targetFile!" echo;!firstLine!>"!targetFile!"
  11. echo;%%i>>"!targetFile!"
  12. )
  13. )
  14. )
  15. pause & exit /b
复制代码

作者: nihaoareyou    时间: 2016-11-4 15:13

回复 11# 回家路上


    运行后,target文件夹是空的,好像不太行
作者: 回家路上    时间: 2016-11-4 15:32

回复 12# nihaoareyou


呵呵
作者: Batcher    时间: 2016-11-5 17:34

回复 10# nihaoareyou


不知是不是你抄错代码了,我直接上传你试试。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2