Board logo

标题: [文本处理] 批处理如何提取固定范围的数据并写到excel中? [打印本页]

作者: ms22    时间: 2015-4-29 17:08     标题: 批处理如何提取固定范围的数据并写到excel中?

比如我有以下格式的文本文件
  1. 001 12345675 赵一        a
  2. 002 2345678 钱二二      b
复制代码
。。。
要提取分成
  1. 001 234567 赵一  a
  2. 002 345678 钱二二 b
复制代码
并写到excel表不同的单元格中,请高手赐教,谢谢~
数据长度是固定的,每一行的0~3,5~11类似这样
作者: gawk    时间: 2015-4-29 17:38

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-4" %%i in ('type "1.txt"') do (
  4.     set str=%%j
  5.     set str=!str:~1,6!
  6.     echo %%i,!str!,%%k,%%l
  7. ))>2.csv
复制代码

作者: ms22    时间: 2015-4-30 08:31

本帖最后由 ms22 于 2015-4-30 08:38 编辑

回复 2# gawk
多谢高手指点,试了一下是可行的,能再帮帮忙吗?谢谢
1.假如2,3,4列是连在一起的,中间没有空格分隔怎么写,好像用tokens不能分啊
2.取出来的数字写入excel变成科学计数法,怎么变成文本格式
作者: gawk    时间: 2015-4-30 09:32

回复 3# ms22


    2、3、4列全部连在一起?还是有些是连在一起的,有些是空格分开的?
作者: ms22    时间: 2015-4-30 10:00

回复 4# gawk
数据连在一起的问题我试着改改成功了,现在就是1.如何变成文本格式。2.想添加一个判断,判断每一行第1个是s的话就进行处理,e的话就跳过这一行
不好意思啊,问题有点多,还请多多指点,谢谢
作者: gawk    时间: 2015-4-30 10:12

回复 5# ms22


    先说第二个,你给出包含e和s的测试数据,我修改代码。
作者: ms22    时间: 2015-4-30 10:19

回复 6# gawk
  1. 000001s9999   1xxxx1xxx
  2. 000002e
  3. 000003s9999   1xxxx1xxx
复制代码
类似这样的,如果这一行前面是s的话后面是有数据,e是没有的
作者: sinsky    时间: 2015-4-30 15:20

为什么要这样 话说。
作者: sinsky    时间: 2015-4-30 15:20

为什么要这样 话说。~~~~
作者: gawk    时间: 2015-5-5 09:06

回复 7# ms22
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-4" %%i in ('type "1.txt"') do (
  4.     set "column1=%%i"
  5.     REM 只处理第一列包含字母s的行
  6.     if "!column1:s=!" neq "%%i" (
  7.         set str=%%j
  8.         set str=!str:~1,6!
  9.         echo %%i,!str!,%%k,%%l
  10.     )
  11. ))>2.csv
复制代码





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