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

[文本处理] [已解决]批处理如何按指定条件提取出csv文件里每一行特定列的数据

求助文本提取指定单元格,输出行列的标号
  求助大神

    手头有一批文本,如图一所示,可否批处理下 把数据部分 大于0的数据提取出来 行标按第一行1XXXXx  列标按上面列标号, 目标输出如图二。
1

评分人数

本帖最后由 WHY 于 2016-9-16 11:35 编辑

回复 4# haichuan5121
  1. @echo off
  2. (for %%i in (*.csv) do (
  3.         setlocal enabledelayedexpansion
  4.         for /f "tokens=* usebackq" %%j in ("%%i") do (
  5.                 set "s=%%j"
  6.                 if not defined n (
  7.                         for %%k in ("!s:,=","!") do set /a n+=1 & set "_!n!=%%~k"
  8.                 ) else (
  9.                         set m=0
  10.                         for %%k in ("!s:,=","!") do (
  11.                                 set /a m+=1
  12.                                 if !m! GTR 1 (
  13.                                         for %%L in (!m!) do (
  14.                                                 if "!_%%L!" NEQ "" if %%~k GTR 0 (
  15.                                                         set "s2=!s2!/!_%%L!"
  16.                                                         set "s3=!s3!/%%~k"
  17.                                                 )
  18.                                         )
  19.                                 ) else set "s1=%%~k"
  20.                         )
  21.                         if defined s2 (echo !s1!,,,!s2!,!s3!&set s2=&set s3=)
  22.                 )
  23.         )
  24.         endlocal
  25. ))>D:\ALL.csv
  26. pause
复制代码
1

评分人数

    • haichuan5121: 完美!完美!完美!谢谢大神,技术 + 1

TOP

本帖最后由 haichuan5121 于 2016-9-16 11:02 编辑

要求目的完美实现,   可否再帮忙完美下功能; (1)目的数据合并到一个单元格用/分开  (2)有结果输出的行也就是不是零的结果数据也输出,如数据结果1/1/1/2/1  即有输出的行 把零的去掉有数的保留
  
谢谢大神们

TOP

本帖最后由 haichuan5121 于 2016-9-16 10:23 编辑

回复 3# WHY


    要求目的完美实现,   可否再帮忙完美下功能; (1)目的数据合并到一个单元格用/分开  (2)有结果输出的行也就是不是零的结果数据也输出,如数据结果1/1/1/2/1  
  
谢谢大神们

TOP

本帖最后由 WHY 于 2016-9-15 23:33 编辑
  1. @echo off
  2. (for %%i in (*.csv) do (
  3.         setlocal enabledelayedexpansion
  4.         for /f "tokens=* usebackq" %%j in ("%%i") do (
  5.                 set "s=%%j"
  6.                 if not defined n (
  7.                         for %%k in ("!s:,=","!") do set /a n+=1 & set "_!n!=%%~k"
  8.                 ) else (
  9.                         set m=0
  10.                         for %%k in ("!s:,=","!") do (
  11.                                 set /a m+=1
  12.                                 if !m! GTR 1 (
  13.                                         for %%L in (!m!) do (
  14.                                                 if "!_%%L!" NEQ "" if %%~k GTR 0 set "s=!s!,!_%%L!"
  15.                                         )
  16.                                 ) else set "s=%%~k,,"
  17.                         )
  18.                         if "!s:~-1!" NEQ "," echo;!s!
  19.                 )
  20.         )
  21.         endlocal
  22. ))>D:\ALL.csv
  23. pause
复制代码
1

评分人数

TOP

第一个图是目标结果    第二个是源文件 ,比如第二行是1 的数有第1.9两列 就提取这两列标号2XXXD 1.9

TOP

返回列表