中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 18:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何生成文本的反序!
楼 主 [求助]如何生成文本的反序! 发表于 2006-10-06 10:42 ·  中国 河南 信阳 联通
初级用户
积分 25
发帖 10
注册 2006-09-12 13:28
UID 62415
状态 离线
如题

比如 “123” 生成 “321”

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

谢谢!
2 发表于 2006-10-06 11:48 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线

@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


由于批处理的特性,它依然无法处理诸如"%之类的部分特殊字符。如果专门为了那几个特殊去写代码处理将会降低极大的效率。所以不建议用批处理来处理高要求的字符工作。
3 发表于 2006-10-06 11:51 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  试试下面的代码:

@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没商量。
考虑问题复杂化,解决问题简洁化。
4 发表于 2006-10-06 21:19 ·  中国 河南 信阳 联通
初级用户
积分 25
发帖 10
注册 2006-09-12 13:28
UID 62415
状态 离线
谢谢 楼上2位

祝各位中秋节好!
5 发表于 2006-10-07 04:01 ·  中国 贵州 贵阳 电信
中级用户
★★
积分 304
发帖 117
注册 2006-04-04 18:43
UID 53325
性别 男
状态 离线
太不可思议了,不过不知道代码的具体含义,先收了!!!
6 发表于 2006-10-07 07:36 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
namejm 兄的容易看懂点
7 发表于 2006-10-08 05:30 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
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'>"
8 发表于 2007-02-02 19:07 ·  美国 北达科他州立大学
中级用户
★★
积分 316
发帖 152
注册 2006-06-18 13:01
UID 57204
性别 男
状态 离线
sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//" test.txt
9 发表于 2007-02-03 01:53 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
WScript.echo StrReverse(WScript.Arguments(0))
10 这个也行吧!就是低级点 发表于 2007-05-07 13:27 ·  中国 河北 秦皇岛 电信
初级用户
积分 68
发帖 32
注册 2007-04-01 12:12
UID 83621
性别 男
状态 离线
@echo off&setlocal enabledelayedexpansion
for /l %%c in (9,-1,0) do (
set /a var=1234567890
set/p=!var:~%%c,1!<nul>>1.txt
)

这个是我这个菜鸟写的,上面几位大哥的看的不是太懂!以后多多学习
11 用gawk试试 发表于 2007-05-07 17:26 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
本人的gawk是GNU awk 3.1.5版本的。
echo abcdefg|gawk "BEGIN{FS=\"\"}{for(i=NF;i>0;i--)printf($i)}"
12 发表于 2007-05-08 14:10 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
VBS一个函数就搞定了。
论坛跳转: