如何在 Windows 中创建具有独特内容的大型文件?

use*_*441 10 windows filesystems

我需要创建一个大尺寸的文件,其中没有重复的内容,这样即使在压缩时,我也不会减小大小。

Spi*_*Pig 7

在 Linux 下,最简单的方法是使用 dd 命令。http://www.chryscome.net/dd有一个 Windows 版本

要创建大小为 1GB 的随机文件,您可以运行以下命令

dd if=/dev/random of=random.file bs=1M count=1000

这意味着:使用 1 MB 的块大小并读/写 1000 个块。

顺便提一句。在 Linux 上你应该使用/dev/urandom,但对于这个 Windows 版本它必须是/dev/random

  • 在 Windows 上使用 Cygwin 可以实现这一点。 (6认同)

joh*_*why 7

在 Windows 上,您可以使用 Powershell 创建包含真正独特内容的文件。无需第三方软件。无需管理员权限。

\n

与 fsutil 不同,输出将不包含 0 或空格。每次运行该命令时,输出都是唯一的。压缩时,文件将保留其原始大小。

\n

输出将如下所示:

\n
\n

\xe4\xab\xb2\xe8\x97\x8c\xe3\xa6\x96\xe9\x90\x86\xec\xa9\x98\xea\x8c\x93\xe2\xae\x85\xed\x94\xbb\xec \x94\x99\xeb\xb0\xa9\xe9\x86\x92\xe0\xa6\xae\xef\x99\xba\xe6\x93\xbe\xe9\x85\xb0\xe2\x82\xb5\xef\xaa \x83\xe2\x8a\x8c\xe5\xbc\x93\xee\xb1\xbf\xeb\x98\x8c\xe7\xa1\xa3\xe6\xb5\x8d\xe9\x90\x9f\xe0\xaa\x98 \xe2\x83\xad\xe4\xbd\x90\xe6\x80\xb1\xec\x8e\x9c\xe9\xbc\x8b\xea\x84\xbb\xec\x9c\xa4\xef\x8c\x95\xe8 \xa8\x9f\xe1\xa6\x9f\xeb\xa7\x82\xe3\xb1\x86\xef\xbf\xbd\xe3\x94\xad\xe0\xb6\xbb\xe6\xa7\x97\xe6\x97 \x8c\xe9\x96\xa3\xe3\x8f\x8f\xe2\xaf\x89\xe4\xbe\x86\xee\x81\x94\xe6\xae\xb0\xe9\xb2\x91\xe5\xa5\xa3 \xe9\x91\x8d\xe7\xbf\xb4\xe3\x91\x88\xe1\x8f\x9a\xe5\x9a\xa0\xe6\x98\xb2\xef\xb8\x87\xed\x87\x87\xeb \xbb\x95\xe8\x80\xa3\xee\xac\xa3\xe7\x8f\x81\xe7\x8a\x92\xe6\x99\xa5\xe4\x92\x8b\xe9\x85\x89\xe6\x87 \x92\xe4\x8a\xbf\xe4\xb1\xb5\xe6\xbc\x9d\xeb\xb2\xbb\xe7\x8e\x93\xe2\x83\xb8\xe5\x95\x88\xef\xbf\xbd \xed\x8e\x95\xee\x8d\xb8\xe6\x88\xb6\xe8\x87\x93\xed\x97\xac\xe7\x8f\x8e\xe5\xae\x87\xea\x84\x8c\xea \x96\x93\xe8\x90\xbf 等...

\n
\n

命令

\n
$out = new-object byte[] 100000; (new-object Random).NextBytes($out); [IO.File]::WriteAllBytes(\'C:\\100K.txt\', $out)\n
Run Code Online (Sandbox Code Playgroud)\n

替换100000为您想要的任何大小(以字节为单位)。如果您需要帮助定义您喜欢的尺寸,您可以使用在线转换器。

\n

替换C:\\100K.txt为您想要的文件路径。如果您提供的名称不带路径,它将保存在您的 Windows 配置文件文件夹中(或者可能是 C:,具体取决于您的系统配置)。文件扩展名对进程没有影响。

\n

分解

\n

这是一系列三个命令。第一个命令创建一个名为 $out 的空数组,其大小为您指定的。第二个命令用随机字符加载数组。第三条命令将数组保存到文件中。

\n

这是Microsoft 支持文件new-object

\n

这似乎至少早在Powershell 3.0就得到了支持。(截至撰写本文时当前版本为 7.x)。

\n

摘自:\n https://www.digitalcitizen.life/3-ways-create-random-dummy-files-windows-given-size

\n

限制

\n

我可以输出最大2G的文件。任何更大的东西都会达到极限。例如,3G 提供:

\n
\n

“无法将值“3000000000”转换为类型“System.Int32”。错误:“值对于 Int32 来说太大或太小。”

\n
\n

这个答案展示了一种以块的形式写入大文件的方法。基本上,在加载数组并写入文件的命令周围包含一个 do..while 。写入需要附加到文件中。

\n

无论数组大小有何限制,我认为您都需要考虑可用的 RAM。

\n

  • 不适用于大尺寸,因为字节超过 Int32 (2认同)

小智 -1

创建随机转储文件的最佳方法是在命令提示符中使用“fsutil”。

C:\>fsutil 文件 createnew another1.txt 32234567000

创建文件 C:\another1.txt

这会立即创建 32GB 文件,其中包含随机内容。

  • 无法“立即”创建包含随机内容的文件。如果你的意思是“不确定”,那么那就是另一个故事了。但是,它远不是随机的。相反,它只包含驱动器上留下的旧数据的位和字节。这不是OP所要求的。 (2认同)
  • 情况可能更糟。 [此站点](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-file) 关于“createnew”的说明:“创建指定名称和大小的文件,内容由零组成”。 (2认同)