題:
在Windows中使用隨機數據創建任意大小的文件
RockPaperLz- Mask it or Casket
2015-12-25 09:51:43 UTC
view on stackexchange narkive permalink

我正在尋找一個應用程序,該應用程序將創建任意大小的文件,並填充偽隨機數據。

必須能夠創建至少1GB的文件(越大越好)。

該應用程序必須在內運行,但可以具有或作為命令行工具

數據不是真正隨機的,只是偽隨機的。

軟件必須是

我更喜歡軟件,但不是必需的。

注意:Windows 7 SP1是需要的最低Windows版本。得到支持。

然後,您可以使用集成的wsh編寫腳本,但是rdfc可能會更容易(除非您已安裝Python)
請注意,速度是此類工具要考慮的重要方面。我尚未使用Python測試該解決方案,但是我很快將基本的PowerShell腳本組合在一起,即使對於1 MB的文件,其性能也很糟糕。 RDFC和dd非常快。
mguassa,如果您使用此處建議的方法,則PowerShell速度很快:https://stackoverflow.com/questions/49835860/fastest-way-to-create-a-file-with-random-data
七 答案:
mguassa
2015-12-25 16:46:44 UTC
view on stackexchange narkive permalink

您可以使用隨機數據文件創建器(RDFC)。

隨機數據文件創建器,簡稱RDFC,是Microsoft Windows的控制台應用程序,可以用於創建任何大小的隨機數填充的二進製文件。因此,例如,開發人員可以創建非常大的文件(即1 TB)以測試自己的應用程序如何處理它。

這是我剛剛在Windows 10上運行的測試為了創建一個100 MB的文件:

  rdfc file.bin 100 MB  

RDFC test

該應用程序是免費軟件,可移植(不需要安裝)。

以10 MB / s的速度完成工作,基本上無法使用。
我可以確認VlastimilOvčáčík所說的話:RDFC很慢。在我的情況下,創建100 MB文件時為3.70MB /秒。已在Microsoft Windows 10上測試。
Franck Dernoncourt
2016-02-04 12:34:39 UTC
view on stackexchange narkive permalink

您可以使用虛擬文件創建器

  • 免費用於教育和非商業個人用途
  • 便攜式
  • Microsoft Windows(需要Microsoft .NET Framework 3.5)
  • GUI和CLI

enter image description here

enter image description here

  • 選項以生成具有隨機內容的文件。在v1.1中為true隨機,但在v1.2中為true:

虛擬文件創建器1.2寫入0到255之間的隨機字節。但是,與以前的版本不同,它會生成真實的隨機文件內容,Dummy File Creator 1.2在隨機內容生成中使用了不同的方法,以提高隨機內容生成的性能。虛擬文件創建器現在將生成4MB的隨機數據,並通過為後續的每次寫入僅在隨機位置更改一些字節來重用相同的數據。儘管結果仍然無法擊敗我們測試過的所有壓縮軟件(即比原始大小更大的壓縮文件),但如果針對Dummy File Creator專門設計的壓縮算法,仍然有可能壓縮此偽隨機內容(極不可能) ) 用來。要設計這種算法,它必須使用長度在1到4,194,303字節之間的字典單詞。大多數人不會注意到這一變化,但是對於正在開發壓縮算法的人們,建議使用以前的版本,該版本會生成真正的隨機內容(但速度要慢得多)進行測試。

哇。使用起來看起來很簡單。謝謝弗蘭克。
我見過的最好的工具,就像它非常快!
mguassa
2016-02-03 03:34:39 UTC
view on stackexchange narkive permalink
Windows的

dd便攜式開源

這是流行的的Windows版本Unix的dd實用程序

下面是一個有關創建100 MB文件的示例:

  dd bs = 100M count = 1 if = / dev /隨機的= C:\ tmp \ file.dat --progress  

dd demo

我在Windows上使用版本0.5 10。

Steve Barnes
2015-12-25 16:42:31 UTC
view on stackexchange narkive permalink

Python是免費的,免費的&開源軟件,並且是跨平台的,可以用作腳本或交互使用-取決於您所需要的隨機內容的種類,其簡單程度如下:

 來自隨機導入randintdesired_size = 1024 * 1024 * 1024#1 GByte with open('RandomData.dat','wb')as outfile:#打開xrange(desired_size)中x的二進制輸出:outfile .write(chr(randint(0,255)))#編寫一個隨機字節打印“完成”。 

您當然可以擴展上面的內容以提示或在命令行上接收文件名&所需的大小,限制範圍或輸出隨機文本等。

我不想為此記住6行代碼。
@VlastimilOvčáčík:您總是可以跳過完成的操作,然後將所需的大小直接放入xrange中,如果內存有問題,則將其縮減為4行-:-)
Franck Dernoncourt
2018-05-20 06:11:40 UTC
view on stackexchange narkive permalink

在Python 3中,要生成25個每個10GB的文件:

  import osdesired_size = 1024 * 1024 * 1024 * 10#10 GBytesdesired_number_of_files = 25for範圍內的文件編號(desired_number_of_files):filename =' output_file {0:04d} .dat'.format(file_number)print('filename:{0}'。format(filename))with open(filename,'wb')as fout:fout.write(os.urandom(desired_size) ))print('Done。') 

生成數據的行(即帶有 urandom 的行)來自 Jon Clements 創建隨機二進製文件。另外,如果您想知道以下內容: os.urandom()和random之間有什麼區別?

我的計算機(Microsoft Windows 10)上的速度約為250 MB /秒

警告:要生成10GB的文件,此代碼段將佔用10GB的RAM,因為它首先將隨機字符串緩衝到內存中。
@ZaarHai感謝您的反饋,很高興,我不記得關於內存行為的信息。如果這是一個問題,也許可以添加[python多久刷新一次文件?](https://stackoverflow.com/q/3167494/395857)中提到的一些刷新思路。
這與沖洗無關。 os.urandom(desired_size)首先生成10GiB長字符串,該字符串佔用RAM。然後,將其傳遞給write()。您需要分塊生成該大字符串。
@ZaarHai,謝謝,知道了,對不起,我太快地閱讀了代碼,我忘記了循環是針對不同的文件的,我認為所有的迭代都是寫在同一個文件中
peterh - Reinstate Monica
2020-07-29 01:21:34 UTC
view on stackexchange narkive permalink

cygwin

它實際上是移植到Windows的常見命令行Unix / Linux工具。

  dd if = / dev / random of = file.img bs = 1048576 count = 10240  

...等等,在這裡也可以使用,就像@mguassa的出色答案中一樣。

我一直想仔細看看那個項目。謝謝彼得。
Michal Krezolek
2020-07-29 00:41:46 UTC
view on stackexchange narkive permalink

Windows有一個內置命令(無需使用第三方軟件即可進行全新安裝,但需要以管理員身份運行)

  fsutil文件createnew bigfile.out 10737418240   

選項說明:bigfile.out-正在創建的文件(可以包含完整路徑)10737418240-以字節為單位的文件大小(此處為10 GB)

該實用程序很好-但是如果它使用隨機數據創建文件,我會感到驚訝。我認為它會創建一個充滿零的文件。
Michal,您介意測試實用程序以查看peterh的假設是否正確,並在答案中解釋結果嗎?我沒有任何Windows機器可以嘗試。有關此的文檔會更好。謝謝 :-)


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...