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

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

有一个文本,test.txt内容如下,
时间:a1
大小:b1
名称:c1

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

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

上面的文本最终重排为,
c1#a1#b1
c2#a2#b2
................

  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. )
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

回复 2# hfg1977


    这个好像不行,顺序不对啊,

TOP

看了一下顺序肯定是对的,如果你是觉得多一个#号的话。
加个变量偏移就可以了
  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
复制代码

TOP

回复 4# 冷玉公子


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

a1#b1#c1
a2#b2#c2
现在就是这样的了,

TOP

  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
复制代码

TOP

回复  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. )
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

返回列表