中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: 把文本内容横列变纵列。 上一主题 | 下一主题
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『楼 主』:  把文本内容横列变纵列。

根据26933062前辈的问题想出来的~ a.txt: aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz 输出为: abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz [ Last edited by pusofalse on 2008-4-23 at 08:36 PM ]


   此帖被 +4 点积分      点击查看详情   
评分人:【 bat-zw 分数: +4  时间:2008-4-23 22:18


2008-4-23 20:34
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
dreamseed
初级用户




积分 38
发帖 10
注册 2007-10-1
来自 GZ
状态 离线
『第 2 楼』:  

除非像所述的格式那么工整,否则没法逆转,将会出现多解。




沉浸于脚本的流浪客。 纳须弥于芥子,容世界之脚本...
2008-4-23 21:05
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 3 楼』:  

:
@echo off&setlocal enabledelayedexpansion
set /p var=<a.txt
for /l %%l in (0 1 25) do (
   for /l %%i in (1 1 4) do (
      set num%%i=!num%%i!!var:~%%l,1!
      set var=!var:~1!
))
for /l %%a in (1 1 4) do echo !num%%a!
pause
[ Last edited by 26933062 on 2008-4-23 at 09:10 PM ]




致精致简!
2008-4-23 21:09
查看资料  发短消息  网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 4 楼』:  

Originally posted by 26933062 at 2008-4-23 09:09 PM: :[code] @echo off&setlocal enabledelayedexpansion set /p var=<a.txt for /l %%l in (0 1 25) do ( for /l %%i in (1 1 4) do ( set num%%i=!num%%i!!var:~%%l,1! set var=!var:~ ...
会显示 abcdfghiklmnpqrsuvwxz abcefghjklmopqrtuvwyz abdefgijklnopqstuvxyz acdefhijkmnoprstuwxyz ???


2008-4-23 21:16
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  

@echo off&setlocal enabledelayedexpansion
set a=-4
:begin
set /a a+=4,b=a+1,c=b+1,d=c+1
for /f "delims=" %%i in (a.txt) do (
    set str=%%i
    set str1=!str:~%a%,1!
    set var1=!var1!!str1!
    set str2=!str:~%b%,1!
    set var2=!var2!!str2!
    set str3=!str:~%c%,1!
    set var3=!var3!!str3!
    set str4=!str:~%d%,1!
    set var4=!var4!!str4!
    if not "!str4!"=="" goto begin
)
for /l %%i in (1,1,4) do call,echo !var%%i!
pause




批处理之家新域名:www.bathome.net
2008-4-23 21:34
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 6 楼』:  

这回对了吧
@echo off&set /p var=<a.txt
for /l %%l in (1 1 26) do (
   for /l %%i in (1 1 4) do (
      call set num%%i=%%num%%i%%%%var:~0,1%%
      call set var=%%var:~1%%
))
for /l %%a in (1 1 4) do call echo %%num%%a%%
pause




致精致简!
2008-4-23 21:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 7 楼』:  

Originally posted by 26933062 at 2008-4-23 21:48: 这回对了吧 [code] @echo off&set /p var=<a.txt for /l %%l in (1 1 26) do ( for /l %%i in (1 1 4) do ( call set num%%i=%%num%%i%%%%var:~0,1%% call set var=%%var:~1%% ...
对了,但效率是问题了




批处理之家新域名:www.bathome.net
2008-4-23 21:51
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 8 楼』:  

Originally posted by dreamseed at 2008-4-23 21:05: 除非像所述的格式那么工整,否则没法逆转,将会出现多解。
a.txt
vydufhqvwirkdqqjmhadwafhchcvwapknltyionafbawcgmnpmllxfzceeddayfmgnawhgqnoxbncxoffcjnqnruqbzuiccfurtsvwpszsvkfypzipnrlwfzcrtypuczqansilblufugryitixutpbopufsugxwellvgahfkjktdjjdstnmjrnrwvfiarvxmpggeuvjsu
运行我的代码,结果如下(自己试): vfwdmwcwnifcpxeaghocfqqiuvzfilcpqiuripuglajjtrvrpuu yhiqhahalobgmfeyngxxcnbcrwsypwrualfyxbfxlhkjnnfvgv dqrqafcptnamlzdfaqbojrzctpvpnftcnbuiuoswvftdmrixgj uvkjdhvkyawnlcdmwnnfnuufsskzrzyzslgttpuegkdsjwames 请按任意键继续. . . 附a.txt内容生成代码:
@echo off
set a=abcdefghijklmnopqrstuvwxyz
:begin
set /a n+=1
if %n% equ 202 echo %var%>>a.txt&goto :eof
set /a b=%random%%%26
call,set str=%%a:~%b%,1%%
set var=%var%%str%
goto begin
[ Last edited by zw19750516 on 2008-4-23 at 10:05 PM ]




批处理之家新域名:www.bathome.net
2008-4-23 22:02
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 9 楼』:  这是我的代码~可惜要生成临时文件~T.T

@echo off&setlocal enabledelayedexpansion echo %time% set n=-4 :1 set /a n+=4 for /f %%a in (a.txt) do ( set str=%%a set var=!str:~%n%,1! set/p=!var!<nul>>temp.tmp if !var! equ z goto :2 ) goto :1 :2 for /l %%a in (1 1 4) do for /f %%i in (temp.tmp) do echo %%i echo %time% pause 模仿zw19750516的另外一贴子,用时0.04-0.06秒之间,完全是在标签2内投机取巧啊~T.T 可以问下两位前辈 学习批处理已经多长时间了吗~?


2008-4-23 22:06
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  

Originally posted by pusofalse at 2008-4-23 22:06: @echo off&setlocal enabledelayedexpansion echo %time% set n=-4 :1 set /a n+=4 for /f %%a in (a.txt) do ( set str=%%a set var=!str:~%n%,1! set/p=!var!<nul>>temp.tmp if !va ...
看我注册时间 ps: goto 后面不要加: [ Last edited by zw19750516 on 2008-4-23 at 10:10 PM ]




批处理之家新域名:www.bathome.net
2008-4-23 22:08
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
dreamseed
初级用户




积分 38
发帖 10
注册 2007-10-1
来自 GZ
状态 离线
『第 11 楼』:  

多解。不可行。 例如 abcd 可“还原”为
ac
b
a
bc
a
       c
b
还有许多许多...




沉浸于脚本的流浪客。 纳须弥于芥子,容世界之脚本...
2008-4-23 22:13
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 12 楼』:  

Originally posted by dreamseed at 2008-4-23 22:13: 多解。不可行。 例如 abcd 可“还原”为
ac
b
a
bc
a
       c
b
还有许多许多...
你先还是测试一下再说多解的事吧,我们是分4组然后递进4位截取的字符,真不知道怎么会出现多解!!!




批处理之家新域名:www.bathome.net
2008-4-23 22:16
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 13 楼』:  

再来一个 :
@echo off&set /p str=<a.txt
setlocal enabledelayedexpansion
for /l %%a in (1 1 26) do (
    set var=!var!!str:~0,1!
    call set str=%%str:!var:~-1!=%%
)
for /l %%a in (1 1 4) do echo !var!
pause




致精致简!
2008-4-23 22:23
查看资料  发短消息  网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 14 楼』:  

@echo off&setlocal enabledelayedexpansion @echo %time% set n=-4 :1 set /a n+=4 for /f %%a in (a.txt) do ( set str=%%a set var=!var!!str:~%n%,1! if !var:~-1! equ z for /l %%i in (1 1 4) do @echo !var! ) if %var:~-1% neq z goto 1 echo %time% echo.终于没临时文件了啊。。。T.T&pause


2008-4-23 22:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 15 楼』:  

仔细看了下5楼的代码,201个字符循环了51次,那么是否可以这样呢? :
@echo off&setlocal enabledelayedexpansion
set /p str=<a.txt
for /l %%i in (1 1 51) do (
    set var1=!var1!!str:~0,1!
    set str=!str:~1!
    set var2=!var2!!str:~0,1!
    set str=!str:~1!
    set var3=!var3!!str:~0,1!
    set str=!str:~1!
    set var4=!var4!!str:~0,1!
    set str=!str:~1! 
)
for /l %%i in (1,1,4) do call,echo !var%%i!
pause




致精致简!
2008-4-23 22:35
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: