[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解決]批处理如何最有效率的打乱字符重新排序?

本帖最后由 pcl_test 于 2017-6-19 12:15 编辑

例如有变量 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

希望能将他随机打乱顺序

例如变成 Q R S C D E F G A B I J K L M N O P T U V W X Y Z H

小弟是有想过是用    %random% %% 变量数     一直反去取变量排序,但是这样觉得很没有效率
500个变量就要重排500次

请问有没有更好得方法?

[ 本帖最后由 strong12345 于 2009-10-17 02:24 编辑 ]

先把你的完整代码贴出来看看?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

记得论坛前辈有很好的方法,忘记是谁的思路了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
  4. for %%i in (%str%)do set _!random!=%%i
  5. for /f "tokens=2 delims==" %%a in ('set _')do set "show=!show! %%a"
  6. echo %show%
  7. pause
复制代码
1

评分人数

批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

小弟没有写出完整的代码,只是一直在思考方法
想到的方法也没有很理想的
不过冰疼版主的代码很不错
感谢了!
研究一下..

TOP

  1. for /f "tokens=2 delims==" %%a in ('set _')do set "show=!show! %%a"
复制代码
這句不是很懂...?
  1. 指令   set _有何意義?
复制代码

[ 本帖最后由 strong12345 于 2009-10-8 12:11 编辑 ]

TOP

我懂了= =....
這方法很不錯!!

TOP

嘿嘿,批处理是很有个性的,
因为其他语言没有批处理的这个个性。所以还有一个方法~
http://bbs.bathome.net/viewthread.php?tid=3733 4楼

wxcute小心%random%数字重复造成的替换哦~ 量大的时候就容易缺失。

TOP

嗯 看了  523066680 大大提供的連結
此篇寫得很不錯
討論可能重複性的問題
前輩們也有提出改善的代碼

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  3. for /l %%a in (26 -1 2) do (
  4.     set /a n=!random!%%%%a
  5.        for %%b in (!n!) do for %%c in ("!str:~%%b,1!") do (
  6.            set var=!var!%%~c&set str=!str:%%~c=!
  7. ))
  8. echo !var!!str!
  9. pause
复制代码

TOP

  1. @echo off&setlocal enabledelayedexpansion&set "t=ABCDEFGHIJKLMNOPQRSTUVWXYZ"&set n=26
  2. for /l %%m in (0,1,50) do set/ar=!random!%%%n%&set/as=!r!+1&call,set t=%%t:~!r!,1%%%%t:~,!r!%%%%t:~!s!%%
  3. echo %t%&pause
复制代码
效率高的被人抢了 ...
糟糕,似乎没看见LS的代码...不会撞了把...

[ 本帖最后由 Seter 于 2009-10-17 08:49 编辑 ]

TOP

返回列表