中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何生成文本的反序!
作者:
标题: [求助]如何生成文本的反序! 上一主题 | 下一主题
boiu
初级用户





积分 25
发帖 10
注册 2006-9-12
状态 离线
『楼 主』:  [求助]如何生成文本的反序!

如题

比如 “123” 生成 “321”

要求: 自动转换并生成目标文本。路径可以在系统盘符下!

谢谢!

2006-10-6 10:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 2 楼』:  


@echo off

    set str=
    set var=
    call :sort "123456789"
    echo %ret%
    call :sort "abcdefg"
    echo %ret%
    pause

goto :eof


:sort

    set "str=%~1"
    set "var=%str:~0,1%%var%"
    set "ret=%var%"
    set "flag=%str:~1%"
    if defined flag call :sort "%flag%"
    set str= && set var=

goto :eof
由于批处理的特性,它依然无法处理诸如"%之类的部分特殊字符。如果专门为了那几个特殊去写代码处理将会降低极大的效率。所以不建议用批处理来处理高要求的字符工作。

2006-10-6 11:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 3 楼』:  

  试试下面的代码:
@echo off
:: 反序列出文本的每行内容
:: 不能处理的字符:
:: 管道符号:|
:: 重定向符号:<、>
:: 连接符号:&
:: 脱字符号:^
:: 其他符号:?、*、)、"
for /f "delims=" %%i in (test.txt) do (
    set str=%%i
    set var=
    call :intercept
)
start test_.txt
goto :eof

:intercept
if not "%str%"=="" (
    set var=%str:~0,1%%var%
    set str=%str:~1%
    goto intercept
    ) else (
    >> test_.txt echo %var%
)
goto :eof
  呵呵,发完这个帖子才发现3742668已经抢先一步。defined的用法比较新鲜。

  后来发现不用在字符串的结尾设置结束符号,修改之后的代码能处理更多的字符。

[ Last edited by namejm on 2006-10-8 at 09:57 ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-6 11:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
boiu
初级用户





积分 25
发帖 10
注册 2006-9-12
状态 离线
『第 4 楼』:  

谢谢 楼上2位

祝各位中秋节好!

2006-10-6 21:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wydos
中级用户





积分 304
发帖 117
注册 2006-4-4
状态 离线
『第 5 楼』:  

太不可思议了,不过不知道代码的具体含义,先收了!!!

2006-10-7 04:01
查看资料  发送邮件  发短消息 网志  OICQ (327337973)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

namejm 兄的容易看懂点

2006-10-7 07:36
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  

bat+vbs
@echo off
echo WScript.echo StrReverse(WScript.Arguments(0)) >$tmp.vbs
cscript //noLogo $tmp.vbs %1
del $tmp.vbs
[ Last edited by electronixtar on 2006-10-8 at 05:34 ]




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-10-8 05:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
amao
中级用户





积分 316
发帖 152
注册 2006-6-18
状态 离线
『第 8 楼』:  

sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//" test.txt

2007-2-2 19:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 9 楼』:  

WScript.echo StrReverse(WScript.Arguments(0))

2007-2-3 01:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
guxingyibei
初级用户





积分 68
发帖 32
注册 2007-4-1
状态 离线
『第 10 楼』:  这个也行吧!就是低级点

@echo off&setlocal enabledelayedexpansion
for /l %%c in (9,-1,0) do (
set /a var=1234567890
set/p=!var:~%%c,1!<nul>>1.txt
)

这个是我这个菜鸟写的,上面几位大哥的看的不是太懂!以后多多学习

2007-5-7 13:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 11 楼』:  用gawk试试

本人的gawk是GNU awk 3.1.5版本的。
echo abcdefg|gawk "BEGIN{FS=\"\"}{for(i=NF;i>0;i--)printf($i)}"


2007-5-7 17:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 12 楼』:  

VBS一个函数就搞定了。

2007-5-8 14:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: