中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]替换变量随机位置的字符为空格
« [1] [2] »
作者:
标题: [已结]替换变量随机位置的字符为空格 上一主题 | 下一主题
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『楼 主』:  [已结]替换变量随机位置的字符为空格

如题。。。
var=abcdefghijk

输出后是a cde gh jk

随机位置 但字符位置不变。。。c还是在第三位~
@echo off&setlocal enabledelayedexpansion
set var=abcdefghijk
set n=-1
:lp
set /a n+=1
call,set str=%%var:~%n%,1%%
if defined str (
   if "!n!" equ "!random:~2,1!" set "str= "
   set pus=!pus!!str!
   goto :lp
)
echo %pus%
pause
[ Last edited by pusofalse on 2008-5-6 at 05:44 PM ]

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





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

随机数会生成麽?

set帮助里的字符截取会麽?

2008-5-6 17:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

已结了?
不过你的代码结果真的是你想要的麽?

2008-5-6 17:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 4 楼』:  我先给出一个空格的代码吧:


@echo off
set str=abcdefghijk
set /a a=%random%%%10
call,set var=%%str:~%a%,1%%
call,set str=%%str:%var%= %%
echo %str%
pause>nul
[ Last edited by zw19750516 on 2008-5-6 at 05:55 PM ]

   此帖被 +2 点积分      点击查看详情   
评分人:【 pusofalse 分数: +2  时间:2008-5-6 18:02




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




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



  Quote:
Originally posted by zw19750516 at 2008-5-6 05:52 PM:
@echo off
set str=abcdefghijk
set /a a=%random%%%10
call,set var=%%str:~%a%,1%%
call,set str=%%str:%var%= %%
echo %str%
pause>nul
[ Last edited by zw19750516 on 2008-5 ...

还是你这好些~ 谢了!

2008-5-6 18:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

@echo off
set str=ss有重复结果就...sss
set /a a=%random%%%14
call,set var=%%str:~%a%,1%%
call,set str=%%str:%var%= %%
echo %str%
pause>nul

2008-5-6 18:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
joyn
中级用户

丶杏灬丶


积分 280
发帖 105
注册 2008-5-6
来自 广西
状态 离线
『第 7 楼』:  

还可以

2008-5-6 18:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
joyn
中级用户

丶杏灬丶


积分 280
发帖 105
注册 2008-5-6
来自 广西
状态 离线
『第 8 楼』:  楼上的同学~~

call,set......中"call,"的作用是什么呀

2008-5-6 19:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


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

类似于变量延迟的作用,在论坛有详细说明的,请搜索之。



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




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 10 楼』:  

“call,set......”用“call set......”更好理解



2008-5-6 22:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 11 楼』:  

4楼的代码中,如果字符有重复的那就达不到随机的效果了,

2008-5-7 09:15
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
joyn
中级用户

丶杏灬丶


积分 280
发帖 105
注册 2008-5-6
来自 广西
状态 离线
『第 12 楼』:  

理论上有重复的也可以的呀~~楼上的大哥说说重复的为什么就不可能随机插入了呢~~

2008-5-7 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 13 楼』:  

如果字符串是  afefeav
你本想替换的是v前面的a,可是替换的时候将第一个a也替换了,

2008-5-7 11:02
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 14 楼』:  这样就不怕重复字符了:


@echo off&setlocal enabledelayedexpansion
set str=aaaaaaaaaa
set n=0&set m=0&set x=0
:set
set /a a=%random%%%10+1
for %%i in (%code%) do if %%i equ %a% goto set
set /a x+=1&set code=%code% %a%
if %x% lss 3 goto set
:lp
set /a n+=1
for %%i in (%code%) do if %%i equ %n% set m=1
if %m% equ 0 (
   set var=!var!%str:~,1%
   ) else (
   set "var=!var! "
)
set str=%str:~1%&set m=0
if defined str goto lp
echo !var!
pause>nul
[ Last edited by zw19750516 on 2008-5-7 at 03:46 PM ]



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





积分 87
发帖 42
注册 2008-5-7
状态 离线
『第 15 楼』:  

强啊,又学到东西啦,

2008-5-8 02:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: