标题: [文本处理] 批处理如何将多个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
- @echo off
- for /f "skip=1 tokens=1-10" %%a in ('type "源数据.txt"') do (
- if not exist "%%f.txt" (
- > "%%f.txt" echo 井名 地区 样品深度 层位 类型 重矿物名称 重矿物含量(%) 样品编号 序号 备注
- )
- >> "%%f.txt" echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j
- )
复制代码
作者: 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
- @echo off & setlocal enabledelayedexpansion
-
- set srcDir=%~dp0src
- set targetDir=%~dp0target
-
- mkdir "%targetDir%" 2>nul
-
- for /f "delims=" %%f in ('dir /a-d /s /b "%srcDir%"') do (
- set /p firstLine=<"!%%f!"
- for /f "skip=1 delims=" %%i in ('type "%%f"') do (
- for /f "tokens=6 delims= " %%j in ("%%i") do (
- set targetFile=%targetDir%\%%j.txt
- if not exist "!targetFile!" echo;!firstLine!>"!targetFile!"
- echo;%%i>>"!targetFile!"
- )
- )
- )
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |