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

嗯,首先,我遇到了一个麻烦,从昨天晚上6点弄个现在,7个小时,学到了许多也没有解决。
我在运行 call set %%var:%a%=%%这种类型的嵌套变量的时候是注定要跳错进入死循环的。
自我无奈之后,坛子里有这种句式的代码我也运行了六七套,全部失败。
看来,非战之罪。所以,我还是把我写的代码交上来吧,大家看看,有错帮我找出来啊。谢谢。

我在想我用的盗版xp还真的是恶心人啊,就是贪ghost方便了,结果系统驱动也没有装好,运行ghost总有意外的惊喜,
不过我是有正版的xp序列号的,还是professional,不过这年头装原版xp是有自残倾向的,太慢了,又太费劲了。

15楼的这段的'set #'这里是什么意思,什么效果,理解不能呢。
for /f "tokens=2 delims=#=" %%i in ('set #') do echo %%i

这段实现了题目的全部要求,生成四个四位不同的不同的随机数。
第二个for循环我手动输入数测试了一下,没有问题,这个程序理论上可以生成所有的四位不同的四位数,只是会越来越慢
只要改一下!m! equ 4这里,还有第二个for循环的( 1 1 4 )这里,把4改成别的数,可以获得想要位数的四位不同随机数,
如果使用变量,可以由键盘输入需要数目的随机数,这样题目的要求就扩展了。
我认为我完成了。累死了。
  1. @echo off&setlocal enabledelayedexpansion
  2. :A
  3. if !m! equ 4 (pause&goto :eof)
  4. set /a nu=%random%%%9000+1000&set a=%nu%
  5. for /l %%i in (1,1,3) do (
  6.     set "b=!a:~,1!"&&set "c=!a:~1!"
  7.     call set "b=%%a:!b!=%%"
  8.     if !b! equ !c! (set a=!c!) else (goto A)
  9.     )
  10. for /l %%i in (1,1,4) do (
  11.     if "!#%%i!"=="" (
  12.         set #%%i=!nu!&&echo !#%%i!&&set /a m+=1&&goto A
  13.         ) else if !#%%i! equ !nu! (goto A))
复制代码
获得经验有二,
当你无法取得成功时,可以去看看成功人士的例子,也许会柳暗花明又一村。
第二个for循环的第一个if判断里应该使用&&而不是使用&,避免出现命令运行不完整的现象,嗯,我这里出现了,所以改成现在这个样子。

TOP

返回列表