Board logo

标题: [求助]如何生成文本的反序! [打印本页]

作者: boiu     时间: 2006-10-6 10:42    标题: [求助]如何生成文本的反序!

如题

比如 “123” 生成 “321”

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

谢谢!
作者: 3742668     时间: 2006-10-6 11:48

@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
由于批处理的特性,它依然无法处理诸如"%之类的部分特殊字符。如果专门为了那几个特殊去写代码处理将会降低极大的效率。所以不建议用批处理来处理高要求的字符工作。
作者: namejm     时间: 2006-10-6 11:51
  试试下面的代码:
@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 ]
作者: boiu     时间: 2006-10-6 21:19
谢谢 楼上2位

祝各位中秋节好!
作者: wydos     时间: 2006-10-7 04:01
太不可思议了,不过不知道代码的具体含义,先收了!!!
作者: vkill     时间: 2006-10-7 07:36
namejm 兄的容易看懂点
作者: electronixtar     时间: 2006-10-8 05:30
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 ]
作者: amao     时间: 2007-2-2 19:07
sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//" test.txt
作者: jmz573515     时间: 2007-2-3 01:53
WScript.echo StrReverse(WScript.Arguments(0))
作者: guxingyibei     时间: 2007-5-7 13:27    标题: 这个也行吧!就是低级点

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

这个是我这个菜鸟写的,上面几位大哥的看的不是太懂!以后多多学习
作者: lxmxn     时间: 2007-5-7 17:26    标题: 用gawk试试

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

作者: slore     时间: 2007-5-8 14:10
VBS一个函数就搞定了。