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

[文本处理] [求助]求一个文本重排的批处理,

[复制链接]
发表于 2012-9-20 10:28:43 | 显示全部楼层 |阅读模式
有一个文本,test.txt内容如下,
时间:a1
大小:b1
名称:c1

时间:a2
大小:b2
名称:c2

................
................

上面的文本最终重排为,
c1#a1#b1
c2#a2#b2
................
发表于 2012-9-20 10:45:08 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. for /f "tokens=1,2 usebackq delims=:" %%a in ("01.txt") do (
  4. set "str=!str!#%%b"
  5. if "%%a"=="名称" echo !str!&set "str="
  6. )
复制代码
 楼主| 发表于 2012-9-20 13:39:25 | 显示全部楼层
回复 2# hfg1977


    这个好像不行,顺序不对啊,
发表于 2012-9-20 15:03:40 | 显示全部楼层
看了一下顺序肯定是对的,如果你是觉得多一个#号的话。
加个变量偏移就可以了

  1. @Echo Off&Setlocal EnableDelayedExpansion
  2. For /f "tokens=1,2 delims=:" %%A In (1.txt) Do (
  3.         Set "Str=!Str!#%%B
  4.         If "%%A"=="名称" Echo !Str:~1!&Set "Str="
  5. )
  6. Pause
复制代码
 楼主| 发表于 2012-9-20 20:46:31 | 显示全部楼层
回复 4# 冷玉公子


    这个我也不清楚,记得之前执行的结果还是正确的,

a1#b1#c1
a2#b2#c2
现在就是这样的了,
发表于 2012-9-20 23:05:26 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims=:" %%a in (test.txt) do (
  3.   set /a n+=1
  4.   set ".!n!=%%a"
  5.   if "!n!"=="3" echo,!.3!#!.1!#!.2!&set "n="
  6. )
  7. pause
复制代码
发表于 2012-9-21 06:36:37 | 显示全部楼层
回复  hfg1977


    这个好像不行,顺序不对啊,
xs00001 发表于 2012-9-20 13:39


顺序的确是abc,不是cab, 更改如下:

  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. for /f "tokens=1,2 usebackq delims=:" %%a in ("01.txt") do (
  4. if "%%a"=="时间" set time=%%b
  5. if "%%a"=="大小" set size=%%b
  6. if "%%a"=="名称" echo %%b#!time!#!size!&set "time="&set "size="
  7. )

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 14:12 , Processed in 0.018876 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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