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

[文本处理] [已解决]批处理怎么提取csv文件中的单元格汇总到一个新的表格里啊?

[复制链接]
 楼主| 发表于 2014-12-16 16:39:47 | 显示全部楼层
回复 15# 522235677


    不是这意思 ,就是假如有五个CSV文件,你运行一遍BAT 有5个数据 你再运行一遍 那个表里就10个数据了
发表于 2014-12-16 16:43:26 | 显示全部楼层
回复 16# haichuan5121
  1. if exist new.csv del new.csv
复制代码
把这个代码放第二行
 楼主| 发表于 2014-12-16 16:48:52 | 显示全部楼层
本帖最后由 haichuan5121 于 2014-12-16 16:54 编辑

回复 17# 522235677


    如果每个表取两个数比如刚才的D37和D38 分别放A列和B列呢,你给的编码怎么才能直接执行 不需要按一下键盘呢,进一步的求解:能不能执行这个批处理后 新表里的数据能实现根据生成数据自动生成一曲线??
发表于 2014-12-16 17:21:14 | 显示全部楼层
回复 18# haichuan5121
  1. @echo off & setlocal enabledelayedexpansion
  2. if exist new.csv del new.csv
  3. for /f "delims=" %%a in ('dir /b *.csv') do (
  4.         for /f "skip=36 delims=" %%b in ('type "%%a"') do (
  5.                 set str=%%b
  6.                 set str=!str:,=,$!
  7.                 for /f "delims=, tokens=4" %%c in ("!str!") do (
  8.                         if "!a!"=="" (
  9.                                 if "!x!"=="" (set x=%%c) else (set y=%%c&>>new.csv echo !x:$=!,!y:$=!&set a=1)
  10.                         )
  11.                 )
  12.         )
  13.         set x=
  14.         set a=
  15. )
  16. pause
  17. start "" new.csv
复制代码
好麻烦,只能这样了
发表于 2014-12-16 17:25:03 | 显示全部楼层
csv不支持生成曲线
 楼主| 发表于 2014-12-16 17:40:55 | 显示全部楼层
回复 19# 522235677


    好人做到底 ,授人与鱼不如授人与渔,如果再加数据怎么办啊,提取三个呢,每行编码大概给下功能备注吧,目的本来是提取三个数据的 所以先从提取一个请教了;
 楼主| 发表于 2014-12-16 17:44:09 | 显示全部楼层
回复 20# 522235677


    csv可以用EXCEL打开啊
 楼主| 发表于 2014-12-16 17:49:51 | 显示全部楼层
回复 20# 522235677


    取两个数的代码里面我也没有看到37字样啊 如果我想改成查询其他行的数据怎么办啊!
 楼主| 发表于 2014-12-16 18:58:42 | 显示全部楼层
大神们能修改成提取三个数据的代码吗?或者命令行提示单元格位置;获取数据的啊
发表于 2014-12-16 19:54:57 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. if exist new.csv del new.csv
  3. set data=D37,E39,D38
  4. for %%a in (%data%) do (
  5.         echo Process %%a
  6.         set /a d+=1
  7.         for %%b in (A B C D E F G H I J K L M) do (
  8.                 set str=%%a
  9.                 set /a n+=1
  10.                 if "!str:~,1!"=="%%b" call :take !n! !str:~1,3! !d!
  11.         )
  12.         set n=
  13. )
  14. (for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "1: 4: 7:"') do set /p=%%a,<nul)>$$.csv
  15. echo.>>$$.csv
  16. (for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "2: 5: 8:"') do set /p=%%a,<nul)>>$$.csv
  17. echo.>>$$.csv
  18. (for /f "delims=: tokens=2" %%a in ('findstr /n . new.csv^|findstr "3: 6: 9:"') do set /p=%%a,<nul)>>$$.csv
  19. move /y $$.csv new.csv >nul
  20. start "" new.csv
  21. exit
  22. :take
  23. set /a h=%2-1
  24. for /f "delims=" %%a in ('dir /b *.csv') do (
  25.         for /f "skip=%h% delims=" %%b in ('type "%%a"') do (
  26.                 set str=%%b
  27.                 set str=!str:,=,$!
  28.                 for /f "delims=, tokens=%1" %%c in ("!str!") do (
  29.                         if "!a!"=="" (set str=%%c&>>new.csv echo !str:$=!)
  30.                         set a=1
  31.                 )
  32.         )
  33.         set a=
  34. )
  35. goto :eof
复制代码
这代码我也是醉了,效率不高,不然得下功夫
 楼主| 发表于 2014-12-16 19:59:43 | 显示全部楼层
本帖最后由 haichuan5121 于 2014-12-16 20:14 编辑

回复 25# 522235677


    99.8        99.8        455        200        200
99.8        99.9        455        200        200
99.8        455        455        200       
输出格式不对哦 ,, 另是 取D37.D38.D39的数据??   要改其他单元格的怎么改哦
 楼主| 发表于 2014-12-17 08:52:37 | 显示全部楼层
本帖最后由 haichuan5121 于 2014-12-17 08:59 编辑

能不能跟这个FTP下载代码合成一个啊? 下载完成后,执行大神的提取命令生成个新的表!
纯小白只能看别人的稍作修改,这个下载代码我还想只下载设定文件生成时间内的文件呢,这个时间段可以locle输入设定的!
比如只下载一周内新生成的文件,或者更高级点,提示命令行带起止日期设定的,
@echo off
rem 指定FTP用户名
set ftpUser=sputter
rem 指定FTP密码
set ftpPass=sputter
rem 指定FTP服务器地址
set ftpIP=10.30.1.4
rem 指定待下载的文件位于FTP服务器的哪个目录
set ftpFolder=/11/
set LocalFolder=F:\2  
set ftpFile=%2%/2.csv
>"%ftpFile%" (   
echo,%ftpUser%   
echo,%ftpPass%   
echo cd "%ftpFolder%"  
echo lcd "%LocalFolder%"  
echo bin   
echo mget *0.csv
start ftp -v -i -s:"%ftpFile%" %ftpIP%   
echo 任务完成...&pause>nul
)
发表于 2014-12-18 15:22:00 | 显示全部楼层
把n个1列的文件合并为一个n列的文件:output.txt
file1.txt  file2.txt file3.txt file4.txt .........
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=2
  4. set str=
  5. type nul>output.txt
  6. for /l %%a in (1,1,!n!) do (
  7.   set /a n1=0
  8.   for /f %%b in ('type file%%a.txt') do (
  9.     set /a n1+=1
  10.     for /l %%c in (!n1!,1,!n1!) do (
  11.        set file%%a.row%%c=%%b
  12.     )
  13.   )
  14. )
  15. for /l %%a in (1,1,!n1!) do (
  16.   for /l %%b in (1,1,!n!) do (
  17.     set "str=!str!!file%%b.row%%a!   "
  18.   )
  19.   echo !str!>>output.txt
  20.   set str=
  21. )
复制代码
发表于 2014-12-18 18:52:00 | 显示全部楼层
修改了下,不足的用0来补。

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=3
  4. set /a m=0
  5. set str=
  6. type nul>output.txt
  7. for /l %%a in (1,1,!n!) do (
  8.   set /a n1=0
  9.   for /f %%b in ('type file%%a.txt') do (
  10.     set /a n1+=1
  11.     for /l %%c in (!n1!,1,!n1!) do (
  12.        set file%%a.row%%c=%%b
  13.     )
  14.   )
  15.   if !n1! gtr !m! (set /a m=!n1!)
  16. )
  17. for /l %%a in (1,1,!m!) do (
  18.   for /l %%b in (1,1,!n!) do (
  19.     if "!file%%b.row%%a!"=="" (set /a file%%b.row%%a=0)
  20.     set "str=!str!!file%%b.row%%a!   "
  21.   )
  22.   echo !str!>>output.txt
  23.   set str=
  24. )
复制代码
 楼主| 发表于 2014-12-19 02:57:21 | 显示全部楼层
回复 25# 522235677


    大神  有时间给把格式改成正确的吧。数据能刷了 就是格式没有按列排列
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 19:19 , Processed in 0.021219 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表