有没有什么比%random%

时间:2016-10-18 14:50:44

标签: windows batch-file random

我正在编写一个程序,将一个程序无限复制到另一个位置。这是一个部分:

@echo off
:place
Xcopy C:\Whatever C:\SomethingElse\%random%*
Goto :place

多数民众赞成。星号是这样的,因此xcopy假定它是文件名,而不是目录。

不幸的是,%random%会在32k-37k左右停止,而且它并不是随机的。为了我的目的,我需要这个真正永远,或至少到数十亿。有没有办法做到这一点?感谢。

3 个答案:

答案 0 :(得分:0)

%RANDOM%的范围非常有限。

  

%RANDOM%生成0到32,767(含)的随机整数

     

0≤%RANDOM%≤32767

您可以做的是使用其中几个来构建复合路径。像这样:

C:\SomethingElse\%random%\%random%\%random%\%random%*

当然,你需要确保所有部分 路径存在,否则复制将不会成功。

答案 1 :(得分:0)

尝试使用Windows PowerShell Get-Random command。 @Sergio Tulentsev完全正确使用%random%命令的有限16位范围,而不是PowerShell命令,其中限制为32位。你应该能够以非常相似的方式实现同​​样的目标。此外,在PowerShell中,管道在标准命令行界面中的效果更好 - 至少就我记忆所知。

我不知道这个随机数生成器有多“好”,但如果它仍然不够随机,你应该考虑为随机数编写一个小命令行工具。您的开发环境支持“好的”随机数,或者您可以尝试实现XOR-Shift PRNG,与实现工作相比,这是非常随机的。

答案 2 :(得分:0)

根据评论,如果不要求随机性,您可以使用当前时间(最近的厘秒(10毫秒))与一些随机的组合:

hide()

但是,请注意您的脚本运行速度应该比生成文件的速度快。否则你会错过一些文件。 此外,没有保证随机不会在相同的百分之一秒内提供相同数量的两倍,即使这种情况非常不可能。

这将允许您每厘秒有大约32000个文件。