【发布时间】:2017-11-13 01:02:32
【问题描述】:
很遗憾,由于我的代表不够高,我无法将 cmets 添加到现有的 StackOverflow 文章中,因此我将在此处引用链接: runonce-to-rename-a-computername-with-a-random-name-on-reboot
为什么LotPings提供的批处理示例代码总是在随机生成的部分前面加上字符列表中的第一个字母,例如“A”?
示例代码:
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
Set "Chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
Call :RandChar 26 Name
For /L %%A in (1,1,14) Do Call :RandChar 62 Name
Echo %Name%
Goto :Eof
:RandChar Range Var
Set /A Pnt=%Random% %% %1 & Set %2=!%2!!Chars:~%Pnt%,1!
执行10次的结果:
AOyVq8olMi7kZaR
ANyU2MoAzZwTpwo
AYNXqJSGKXgyvca
AFGoCImfNOHuVSz
AHNhxnj9Wyqkqo3
AML6hTrSHK4TFut
AHuinBZCWr5D5NZ
AQYNtXaYMXRdGOb
ARWYXn7YNMQ0cmm
APHdWggSQl5KUhA
如何修改代码以使起始字符也随机化?
【问题讨论】:
-
没有测试任何东西,我会先发制人地责怪延迟扩展,因为这通常是批处理问题的根源。使用
!random!代替%random%有效吗? -
不幸的是,结果似乎是一样的。我生成了大约 15-20 个不同的值,它们仍然以 A 开头
-
将最后一行的
set %2部分放在它自己的行上。当您使用&时,某些变量扩展不会起作用。 -
天才!那行得通:D 谢谢
标签: batch-file