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

[文本处理] [已解决]批处理:按列分解并合并数值

[复制链接]
 楼主| 发表于 2013-1-23 10:42:37 | 显示全部楼层
本帖最后由 思想之翼 于 2013-1-23 10:51 编辑

回复 15# terse

谢谢关注!试验一下,发现数据合并结果不对,整体错位了1行。
结果为
0000006 2 1 1
0000007 5 5 2
0000008 1 1 2
0000009 5 2 2
应为
0000005 2 1 1
0000006 5 5 2
0000007 1 1 2
0000008 5 2 2
另,合并后的结果能否新建一个文件夹?
发表于 2013-1-23 11:28:51 | 显示全部楼层
回复 16# 思想之翼
已修改 再试
发表于 2013-1-23 12:48:41 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. md New 2>nul
  3. set step=1
  4. for /f "tokens=1,2" %%a in (a.txt) do (
  5.   set /a n+=1,m=n-step,k=m-step
  6.   set "_!n!=%%b"
  7.   if defined _!k! (
  8.     for /l %%c in (0 1 62) do (
  9.       set /a Name=%%c + 101
  10.       for %%d in (!k! !m! !n!) do (
  11.         set aa=!_%%d!
  12.         set "str=!str! !aa:~%%c,1!"
  13.       )
  14.       echo,%%a !str:~1!>>"New\!Name:~1!.txt"
  15.       set "str="
  16.     )
  17.   )
  18. )
  19. pause
复制代码
更改第3行的数字即可,试试?

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 优秀作品

查看全部评分

 楼主| 发表于 2013-2-22 11:24:18 | 显示全部楼层
本帖最后由 思想之翼 于 2013-2-22 21:10 编辑

回复 18# apang

谢谢!VBA代码完美解决问题。研究您的代码,想扩展运用,但是遇到了问题:
1、此代码得到的单个txt文本的数据格式是0000001 4 3 9 2,若数据格式改为0000001 4392,如何修改代码?
2、此代码处理后有01-63个txt文本,若只产生1个txt文本,合并分散在01-63个txt文本的数据,数据格式为0000001 4392 2135 3695 2587 ......9987,第一列0000001是时间序号,第二列4392是01.txt的数值,第三列2135是02.txt的数值......第64列9987是63.txt的数值,这又该如何修改代码?
恳望得到您的帮助!
发表于 2013-2-23 12:53:41 | 显示全部楼层
0000001 4 3 9 2 为什么是5列而不是4列?假设是4列:
1.18楼第12行:set "str=!str!!aa:~%%c,1!"
   第14行:echo,%%a !str!>>"New\!Name:~1!.txt"

2.与63个txt文档放在一起
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1 1 63) do (
  3.   set /a Name=%%a+100,n=0
  4.   for /f "usebackq tokens=1*" %%b in ("!Name:~1!.txt") do (
  5.     set /a n+=1
  6.     for %%i in (!n!) do (
  7.       if %%a==1 (set "_%%i=%%b %%c") else set "_%%i=!_%%i! %%c"
  8.     )
  9.   )
  10. )
  11. (for /l %%a in (1 1 !n!) do echo,!_%%a!)>Result.txt
  12. pause
复制代码
 楼主| 发表于 2013-2-23 14:16:38 | 显示全部楼层
本帖最后由 思想之翼 于 2013-2-23 14:28 编辑

回复 20# apang


    谢谢!您的代码给我很大启发。将63个文本合并的代码,是在已经产生63个文本后的情况下使用的,能否在用18楼的代码处理数据时,不分成63个文本,直接产生紧凑型的数据(即4321,非4 3 2 1),并存放在1个文本中?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 00:21 , Processed in 0.019767 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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