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

[文本处理] 如何把文本文件的数据按规定的格式重新排列

有文本文件data.txt数据内容如下(a1,b1等代表的是随机数字):
a1
b1
a2
b2
.
.
.
a20
b20
现在要求把数据变成如下形式(1-20是新添的序号),输出到新的compute.txt文件中,并打开该文件.
1   b1  a1  11  b11  a11
2   b2  a2  12  b12  a12
3   ................................
.....................................
10 b10 a10  20 b20 a20

[ 本帖最后由 qlcom 于 2008-12-24 23:26 编辑 ]

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.       if defined flog (
  4.       call set .!m!=%%.!m!%% %%i
  5.       set flog=
  6.     ) else (
  7.       set/a n+=1,m=n%%10
  8.       set flog=g
  9.       if !n! gtr 10 (call set .!m!=%%.!m!%% !n! %%i)else call set .!m!=!n!%%.!m!%% %%i
  10. ))
  11. for /l %%i in (1 1 10) do (
  12.     set/a m=%%i%%10
  13.     call echo %%.!m!%%
  14. )
  15. pause
复制代码
1

评分人数

    • qlcom: 很厉害,完全要得,不知道那个点有什么作用?PB + 1

TOP

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. for /f %%i in (data.txt) do call :show %%i
  4. for /l %%i in (1 1 9) do echo %%i !shw%%i!
  5. echo 10 %shw0%
  6. pause
  7. goto :eof
  8. :show
  9. set val=%1
  10. set shw%val:~-1%=!shw%val:~-1%! %val%
复制代码

TOP

原帖由 wxcute 于 2008-12-24 19:15 发表
@echo off
setlocal enableDelayedExpansion
for /f %%i in (data.txt) do call :show %%i
for /l %%i in (1 1 9) do echo %%i !shw%%i!
echo 10 %shw0%
pause
goto :eof
:show
set val=%1
set shw%val:~-1 ...


好象不大行哦~~,而且a1-a20,b1-b20并不是个有规律的字符,而是代表的一个随机数字,不能引用其下标的.

TOP

原帖由 terse 于 2008-12-24 16:55 发表
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
      if defined flog (
      call set .!m!=%%.!m!%% %%i
      set flog=
    ) else (
      set/a n+=1,m=n%%10
    ...


不好意思,写题目的时候出了点错,应该顺序是1 b1 a1 11 b11 a11,就是a,b交换一下,依你的程序怎么修改呢?好象有点点麻烦

TOP

原帖由 qlcom 于 2008-12-24 23:24 发表


不好意思,写题目的时候出了点错,应该顺序是1 b1 a1 11 b11 a11,就是a,b交换一下,依你的程序怎么修改呢?好象有点点麻烦
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (ta.txt) do (
  3.       if defined ..!n! (
  4.       if !n! gtr 10 (call set .!m!=%%.!m!%% !n! %%i %%..!n!%%)else call set .!m!=!n! %%i %%..!n!%%
  5.       set ..!n!=
  6.     ) else (
  7.       set/a n+=1,m=n%%10
  8.       set ..!n!=%%i
  9. ))
  10. for /l %%i in (1 1 10) do (
  11.     set/a m=%%i%%10
  12.     call echo %%.!m!%%
  13. )
  14. pause
复制代码

TOP

返回列表