楼 主
[已结]替换变量随机位置的字符为空格
发表于 2008-05-06 17:12 · 中国 山东 淄博 联通
银牌会员
★★★
积分 1,604 发帖 646 注册 2008-04-13 23:39 18年会员 UID 115804 性别 男
状态 离线
如题。。。
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 ]
第 2 楼
发表于 2008-05-06 17:48 · 中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212 发帖 2,478 注册 2007-02-08 23:39 19年会员 UID 79003 性别 男
状态 离线
第 3 楼
发表于 2008-05-06 17:51 · 中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212 发帖 2,478 注册 2007-02-08 23:39 19年会员 UID 79003 性别 男
状态 离线
第 4 楼
我先给出一个空格的代码吧:
发表于 2008-05-06 17:52 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
@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 ]
批处理之家新域名:www.bathome.net
第 5 楼
发表于 2008-05-06 18:03 · 中国 山东 淄博 联通
银牌会员
★★★
积分 1,604 发帖 646 注册 2008-04-13 23:39 18年会员 UID 115804 性别 男
状态 离线
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 ...
还是你这好些~ 谢了!
第 6 楼
发表于 2008-05-06 18:10 · 中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212 发帖 2,478 注册 2007-02-08 23:39 19年会员 UID 79003 性别 男
状态 离线
@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
第 7 楼
发表于 2008-05-06 18:22 · 中国 广西 南宁 电信
中级用户
★★
丶杏灬丶
积分 280 发帖 105 注册 2008-05-06 03:37 18年会员 UID 117858 性别 男 来自 广西
状态 离线
第 8 楼
楼上的同学~~
发表于 2008-05-06 19:10 · 中国 广西 南宁 电信
中级用户
★★
丶杏灬丶
积分 280 发帖 105 注册 2008-05-06 03:37 18年会员 UID 117858 性别 男 来自 广西
状态 离线
call,set......中"call,"的作用是什么呀
第 9 楼
发表于 2008-05-06 19:15 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
类似于变量延迟的作用,在论坛有详细说明的,请搜索之。
批处理之家新域名:www.bathome.net
第 10 楼
发表于 2008-05-06 22:18 · 中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687 发帖 1,467 注册 2005-08-08 12:00 20年会员 UID 44210
状态 离线
“call,set......”用“call set......”更好理解
第 11 楼
发表于 2008-05-07 09:15 · 中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608 发帖 780 注册 2007-10-07 10:19 18年会员 UID 99089 性别 男
状态 离线
4楼的代码中,如果字符有重复的那就达不到随机的效果了,
第 12 楼
发表于 2008-05-07 10:52 · 中国 广西 南宁 电信
中级用户
★★
丶杏灬丶
积分 280 发帖 105 注册 2008-05-06 03:37 18年会员 UID 117858 性别 男 来自 广西
状态 离线
理论上有重复的也可以的呀~~楼上的大哥说说重复的为什么就不可能随机插入了呢~~
第 13 楼
发表于 2008-05-07 11:02 · 中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608 发帖 780 注册 2007-10-07 10:19 18年会员 UID 99089 性别 男
状态 离线
如果字符串是 afefeav
你本想替换的是v前面的a,可是替换的时候将第一个a也替换了,
第 14 楼
这样就不怕重复字符了:
发表于 2008-05-07 15:45 · 中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105 发帖 1,276 注册 2008-03-08 13:00 18年会员 UID 112398 性别 男
状态 离线
@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
第 15 楼
发表于 2008-05-08 02:19 · 中国 广东 佛山 禅城区 电信
初级用户
★
积分 87 发帖 42 注册 2008-05-07 23:37 18年会员 UID 118057 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正