2016-10-18 4 views
0

하나의 프로그램을 다른 위치에 무한대로 복사하는 프로그램을 작성하고 있습니다. 여기에 부분이 있습니다 :% random %

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

그게 전부입니다. 별표 (*)는 xcopy가 디렉토리가 아니라 파일 이름이라고 가정합니다.

불행히도 % random %은 (는) 32k-37k 부근에서 멈추며 실제로 무작위가 아닙니다. 제 목적을 위해서, 저는 정말로 이것을 영원히, 또는 적어도 수십억 달러가 필요합니다. 이것을 할 수있는 방법이 있습니까? 감사.

+0

임의성이 중요합니까 아니면 고유하게 증가해야합니까? 얼마나 무작위로 있어야합니까? – Simon

+0

나는 무작위로 0-1,000,000,000의 범위의 파일을 명명하기를 희망한다. 이것은 내 파일이 5,000 번 복제하는 데 약 15 초 밖에 걸리지 않기 때문입니다. 그것은 작은 파일입니다. 무작위 일 필요는 없습니다. –

+0

임의성이 중요하지 않은 경우, 1 씩 증가하는 정수를 사용하십시오 :'set/A i + = 1''Xcopy C : \ Whatever C : \ SomethingElse \ % i % *' – Aacini

답변

0

% RANDOM % 범위는 매우 제한적입니다.

퍼센트 RANDOM %는 (포함) 32,767

0 ≤ % RANDOM % 0에서 임의의 정수를 생성 ≤ 복합을 구축 할 몇 가지 사용 당신이 무엇을 할 수 있는지 32767

통로. 이런 식으로 뭔가 : 물론

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

, 당신은 경로의 모든 부분이 존재하거나 다른 사본이 성공하지 않습니다 있는지 확인해야합니다.

0

Windows PowerShell Get-Random command을 사용해보십시오. @Sergio Tulentsev는 제한이 32 비트 인 PowerShell 명령과 반대로 %random% 명령의 제한된 16 비트 범위에서 완벽합니다. 당신은 아주 비슷한 방법으로 같은 것을 성취 할 수 있어야합니다. 또한 파이핑은 표준 명령 줄 인터페이스 에서처럼 PowerShell에서 더 잘 작동합니다. 적어도 내가 기억하는 한.

이 난수 생성기가 "좋은"방법을 모르지만 아직 충분히 랜덤하지 않은 경우 임의의 숫자에 대해 약간의 명령 줄 도구를 작성하는 것을 고려해야합니다. 개발 환경이 "양호한"난수를 지원하거나 XOR-Shift PRNG을 구현하려고 시도 할 수 있습니다. 이는 구현 노력에 비해 매우 임의적입니다. 코멘트를 같이

0

, 임의성이 필요하지 않은 경우, 당신은 어떤 임의의로 (가장 가까운 센티 초에서 (10ms의)) 현재 시간의 조합을 사용할 수 있습니다

@echo off 
:place 
:: get the current time 
set t=%time% 
:: replace : with _ for file name 
set t=%t::=_% 
Xcopy C:\Whatever C:\SomethingElse\%t%_%random%* 
goto :place 

그러나, 조심하여 스크립트는 파일 생성보다 빠르게 실행해야합니다. 그렇지 않으면 일부 파일을 놓치게됩니다. 또한, 매우 가능성이 없더라도 무작위로 100 분의 1 초 동안 두 번 같은 숫자를 제공하지 않는다는 보장은 없습니다.

이렇게하면 centi-sec 당 약 32000 개의 파일을 가질 수 있습니다.

+0

@Stephan Edited by Edit – Simon