Na mesma linha que Criar rapidamente um arquivo grande em um sistema Linux , gostaria de criar rapidamente um arquivo grande em um sistema Windows. Em geral, estou pensando em 5 GB. O conteúdo não importa. É preferível um comando interno ou um arquivo em lotes curto, mas aceitarei um aplicativo se não houver outras maneiras fáceis.
windows
batch-file
Leigh Riffel
fonte
fonte
fsutil file createnew
NÃO cria arquivos esparsos:c:\>fsutil file createnew test.txt 0x100000
File c:\test.txt is created
c:\>fsutil sparse queryflag test.txt
This file is NOT set as sparse
Você pode usar a ferramenta Sysinternals Contig . Possui uma
-n
opção que cria um novo arquivo de um determinado tamanho. Ao contráriofsutil
, não requer privilégios administrativos.fonte
contig
efetivamente vai para o último byte e escreve um único0
lá (basta olhar com o Process Monitor). O Windows preenche o restante com zeros. Provavelmente, é tão eficiente quanto você pode obter com arquivos não esparsos e a criação de um arquivo com tamanho de 5 GiB leva apenas alguns segundos, mesmo no meu disco rígido. Acho que naquela época eu tentei em um SSD ou com arquivos menores. Mas é bastante rápido (e definitivamente mais rápido do que escrever todos os bytes do arquivo vazio por si mesmo.Eu estava procurando uma maneira de gerar arquivos grandes com dados, e não apenas arquivos esparsos. Deparei com a técnica abaixo :
fonte
echo "This is just a sample line appended to create a big file.. " > dummy.txt for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
(Execute os dois comandos acima, um após o outro, ou você pode adicioná-los a um arquivo em lotes.) Os comandos acima criam um arquivo de 1 MB dummy.txt em alguns segundos.Confira RDFC http://www.bertel.de/software/rdfc/index-en.html
O RDFC provavelmente não é o mais rápido, mas aloca blocos de dados. O mais rápido seria usar a API de nível inferior para obter cadeias de cluster e colocá-las na MFT sem gravar dados.
Cuidado para não haver uma bala de prata aqui - se a "criação" retornar instantaneamente, significa que você obteve um arquivo esparso que apenas falsifica um arquivo grande, mas você não receberá blocos / cadeias de dados até escrever nele. Se você acabou de ler, obteria zeros muito rápidos, o que poderia fazer você acreditar que sua unidade de repente ficou incrivelmente rápida :-)
fonte
Verifique as ferramentas do Windows Server 2003 Resource Kit . Existe um utilitário chamado Creatfil.
É semelhante ao mkfile no Solaris.
fonte
Eu precisava de um arquivo regular de 10 GB para teste, então não pude usá-
fsutil
lo porque ele cria arquivos esparsos (obrigado @ZXX).Eu queria criar um arquivo de 10 GB, mas por algum motivo ele apareceu apenas com 4 GB, então eu queria estar seguro e parado com 4 GB. Se você realmente deseja ter certeza de que seu arquivo será tratado adequadamente pelo sistema operacional e outros aplicativos, pare de expandi-lo em 1 GB.
fonte
rm
é um comando Unix / Linux, enquantodel
é um comando DOS / Windows ...?%i
em um arquivo em lote, você usa o sinal de porcentagem duplo%%i
.@echo off
, então é obviamente um.bat
. É por isso que tinha sinais de porcentagem duplos.file-4gb.txt
antes de criá-lo? Isso não resultaria em erro? Você realmente quis criarfile-4gb.txt
nessa linha? Ou renomear ofile-big.txt
arquivo antigo ? Isso não está claro, mesmo para um arquivo em lotes. Se você pretendia renomeá-lo, provavelmente o comando que estava procurandoren
. Likeren file-big.txt file-4gb.txt
. Eu acho que você confundiu issorm
.Abra o Gerenciador de tarefas do Windows, encontre o maior processo em execução, clique com o botão direito do mouse e clique em
Create dump file
.Isso criará um arquivo relativo ao tamanho do processo na memória na sua pasta temporária.
Você pode criar facilmente um arquivo dimensionado em gigabytes.
fonte
Antes de escrever um aplicativo completo, nós, pessoal do Python, podemos obter arquivos de qualquer tamanho com quatro linhas, o mesmo trecho no Windows e Linux (a
os.stat()
linha é apenas uma verificação):fonte
Linha única do PowerShell para criar um arquivo
C:\Temp
para preencher o disco C: deixando apenas 10 MB:fonte
Usar:
fonte
int
? Isso funcionará para um arquivo de 5 GB? Isso é limitado a 2 ou 4 GB? Que o terceiro parâmetro paraSetFilePointer()
é 0 sugere que não funcionará para um arquivo de 5 GB.Eu estava procurando uma maneira de criar um arquivo fictício grande com alocação de espaço recentemente. Todas as soluções parecem estranhas. Finalmente, iniciei o
DISKPART
utilitário no Windows (incorporado desde o Windows Vista):Onde MÁXIMO é o tamanho do arquivo resultante, 20 GB aqui.
fonte
Encontrei um excelente utilitário configurável em https://github.com/acch/genfiles .
Ele preenche o arquivo de destino com dados aleatórios, para que não haja problemas com arquivos esparsos e, para meus propósitos (teste de algoritmos de compressão), fornece um bom nível de ruído branco.
fonte
Arquivos temporários devem ser armazenados na pasta Temp do Windows. Com base na resposta de Rod, você pode usar o seguinte liner para criar um arquivo temporário de 5 GB que retorna o nome do arquivo
Explicação:
[System.IO.Path]::GetTempFileName()
gera um nome de arquivo aleatório com extensão aleatória na pasta Temp do Windows[System.IO.File]::Create($_)
qual cria o arquivo.SetLength(5gb)
. Fiquei um pouco surpreso ao descobrir que o PowerShell suporta Byte Conversion , o que é realmente útil..close
para permitir que outros aplicativos acessem;$_
o nome do arquivo é retornado e com| ? { $_ }
isso é garantido que apenas o nome do arquivo seja retornado e não a string vazia retornada por[System.IO.File]::Create($_)
fonte
A maneira mais simples que encontrei é este utilitário gratuito: http://www.mynikko.com/dummy/
Cria arquivos fictícios de tamanho arbitrário preenchidos com espaços ou preenchidos com conteúdo não compactável (sua escolha). Aqui está uma captura de tela:
fonte
Plain ol 'C ... isso é desenvolvido no MinGW GCC no Windows XX e deve funcionar em qualquer plataforma C' genérica '.
Ele gera um arquivo nulo de um tamanho especificado. O arquivo resultante NÃO é apenas uma entrada de ocupante de espaço no diretório e, de fato, ocupa o número especificado de bytes. Isso é rápido porque nenhuma gravação real ocorre, exceto o byte gravado antes do fechamento.
Minha instância produz um arquivo cheio de zeros - isso pode variar de acordo com a plataforma; este programa essencialmente configura a estrutura de diretórios para quaisquer dados que estejam por aí.
fonte
Encontrei uma solução usando o DEBUG em http://www.scribd.com/doc/445750/Create-a-Huge-File , mas não conheço uma maneira fácil de criar um script e não parece ser capaz para criar arquivos maiores que 1 GB.
fonte
... arquivo de 1 MB dummy.txt dentro de alguns segundos.
Veja aqui: http://www.windows-commandline.com/how-to-create-large-dummy-file/
fonte
Você pode usar o comando cat powershell.
Primeiro, crie um arquivo de texto simples com alguns caracteres. Quanto mais caracteres iniciais você digitar, mais rápido ele ficará maior. Vamos chamar de out.txt. Então, em Powershell:
Aguarde o tempo necessário para tornar o arquivo grande o suficiente. Em seguida, pressione ctrl-c para finalizar.
fonte
Você pode tentar este código C ++:
Talvez demore algum tempo para gerar, dependendo da velocidade da CPU ...
fonte
Resposta simples em Python: se você precisar criar um grande arquivo de texto real, usei um
while
loop simples e consegui criar um arquivo de 5 GB em cerca de 20 segundos. Eu sei que é bruto, mas é rápido o suficiente.fonte
Rápido para executar ou rápido para digitar em um teclado? Se você usa o Python no Windows, pode tentar o seguinte:
fonte
Outra solução GUI: WinHex.
Ao contrário de algumas das soluções já propostas, ele realmente grava os dados (vazios) no dispositivo.
Também permite preencher o novo arquivo com um padrão selecionável ou dados aleatórios:
fonte
Fiz algumas adições ao mesmo
fsutil
método mencionado na resposta escolhida. Isso é para criar arquivos de várias extensões diferentes e / ou de vários tamanhos.O código pode ser clonado em https://github.com/iamakidilam/bulkFileCength.git
fonte