script run how example create commands batch bat windows batch-file

run - Crea rápidamente archivos de gran tamaño en un sistema Windows



windows batch file virus (20)

¿Rápido de ejecutar o rápido de escribir en un teclado? Si usas Python en Windows, puedes probar esto:

cmd /k py -3 -c "with open(r''C:/Users/LRiffel/BigFile.bin'', ''wb'') as file: file.truncate(5 * 1 << 30)"

En el mismo sentido que Crear rápidamente un archivo grande en un sistema Linux , me gustaría crear rápidamente un archivo grande en un sistema Windows. En general estoy pensando en 5 GB. El contenido no importa. Sería preferible un comando incorporado o un archivo por lotes cortos, pero aceptaré una aplicación si no hay otras formas fáciles.



Abra el Administrador de tareas de Windows, encuentre el proceso más grande que está ejecutando con el botón derecho y haga clic en Create dump file .

Esto creará un archivo relativo al tamaño del proceso en la memoria en su carpeta temporal.

Puede crear fácilmente un archivo de tamaño en gigabytes.


Además de escribir una aplicación completa, los os.stat() Python pueden lograr archivos de cualquier tamaño con cuatro líneas, el mismo fragmento de os.stat() en Windows y Linux (la línea os.stat() es solo una comprobación):

>>> f = open(''myfile.txt'',''w'') >>> f.seek(1024-1) # an example, pick any size >>> f.write(''/x00'') >>> f.close() >>> os.stat(''myfile.txt'').st_size 1024L >>>


Echa un vistazo a RDFC http://www.bertel.de/software/rdfc/index-en.html

RDFC probablemente no sea el más rápido, pero sí asigna bloques de datos. El absolutamente más rápido tendría que usar una API de nivel inferior para obtener cadenas de clústeres y colocarlas en MFT sin escribir datos.

Tenga en cuenta que aquí no hay una bala de plata: si la "creación" vuelve al instante, significa que tiene un archivo disperso que simplemente falsifica un archivo grande, pero no obtendrá bloques / cadenas de datos hasta que escriba en él. Si acabas de leer, obtendrás ceros muy rápidos que podrían hacerte creer que, de repente, tu disco se volvió increíblemente rápido :-)


Encontré una excelente utilidad que se puede configurar en https://github.com/SL5R0/GenFile .

Rellena el archivo de destino con datos aleatorios, por lo que no hay problemas con los archivos dispersos, y para mis propósitos (algoritmos de compresión de prueba) proporciona un buen nivel de ruido blanco.



Estaba buscando una manera de crear un gran archivo ficticio con asignación de espacio recientemente. Todas las soluciones se ven incómodas. Finalmente, acabo de iniciar la utilidad DISKPART en Windows (integrada desde Windows Vista):

DISKPART CREATE VDISK FILE="C:/test.vhd" MAXIMUM=20000 TYPE=FIXED

Donde MAXIMUM es el tamaño del archivo resultante, 20 GB aquí.


Estaba buscando una manera de generar archivos grandes con datos, no solo archivos dispersos. Encontré la siguiente técnica :

Si desea crear un archivo con datos reales, puede utilizar el siguiente script de línea de comandos.

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

(Ejecute los dos comandos anteriores uno tras otro o puede agregarlos a un archivo por lotes).

Los comandos anteriores crean un archivo de 1 MB dummy.txt en pocos segundos ...


He hecho algunas adiciones al mismo método fsutil como se menciona en la respuesta elegida. Esto es para crear archivos de muchas extensiones diferentes y / o de varios tamaños.

set file_list=avi bmp doc docm docx eps gif jpeg jpg key m4v mov mp4 mpg msg nsf odt pdf png pps ppsx ppt pptx rar rtf tif tiff txt wmv xls xlsb xlsm xlsx xps zip 7z set file_size= 1 for %%f in (%file_list%) do ( fsutil file createnew valid_%%f.%%f %file_size% ) > xxlogs.txt

El código se puede clonar desde https://github.com/iamakidilam/bulkFileCreater.git


Los archivos temporales se deben almacenar en la carpeta temporal de Windows. Basado en la respuesta de Rod , puede usar el siguiente forro para crear un archivo temporal de 5 GB que devuelve el nombre del archivo

[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }

Explicación:

  • [System.IO.Path]::GetTempFileName() genera un nombre de archivo aleatorio con extensión aleatoria en la carpeta temporal de Windows
  • La canalización se usa para pasar el nombre a [System.IO.File]::Create($_) que crea el archivo
  • El nombre del archivo se establece en el archivo recién creado con .SetLength(5gb) . Me sorprendió un poco descubrir que PowerShell es compatible con la conversión de bytes , lo que es realmente útil.
  • El identificador de archivo debe cerrarse con .close para permitir que otras aplicaciones accedan a él
  • Con ;$_ se devuelve el nombre del archivo y con | ? { $_ } | ? { $_ } | ? { $_ } se asegura de que solo se devuelva el nombre de archivo y no la cadena vacía devuelta por [System.IO.File]::Create($_)

Necesitaba un archivo regular de 10 GB para las pruebas, así que no pude usar fsutil porque crea archivos dispersos (gracias @ZXX).

@echo off :: Create file with 2 bytes echo.>file-big.txt :: Expand to 1 KB for /L %%i in (1, 1, 9) do type file-big.txt>>file-big.txt :: Expand to 1 MB for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt :: Expand to 1 GB for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt :: Expand to 4 GB del file-4gb.txt for /L %%i in (1, 1, 4) do type file-big.txt>>file-4gb.txt del file-big.txt

Quería crear un archivo de 10 GB, pero por alguna razón solo aparecía como 4 GB, así que quería estar seguro y paré en 4 GB. Si realmente desea asegurarse de que su archivo sea manejado adecuadamente por el sistema operativo y otras aplicaciones, deje de expandirlo a 1 GB.


Plain ol ''C ... esto se basa en MinGW GCC en Windows XX y debería funcionar en cualquier plataforma C'' genérica ''.

Genera un archivo nulo de un tamaño especificado. El archivo resultante NO es solo una entrada ocupante de espacio de directorio, y de hecho ocupa el número especificado de bytes. Esto es rápido porque no se producen escrituras reales, excepto el byte escrito antes de cerrar.

Mi instancia produce un archivo lleno de ceros: esto puede variar según la plataforma; este programa esencialmente establece la estructura del directorio para cualquier dato que se encuentre.

#include <stdio.h> #include <stdlib.h> FILE *file; int main(int argc, char **argv) { unsigned long size; if(argc!=3) { printf("Error ... syntax: Fillerfile size Fname /n/n"); exit(1); } size = atoi(&*argv[1]); printf("Creating %d byte file ''%s''.../n", size, &*argv[2]); if(!(file = fopen(&*argv[2], "w+"))) { printf("Error opening file %s!/n/n", &*argv[2]); exit(1); } fseek(file, size-1, SEEK_SET); fprintf(file, "%c", 0x00); fclose(file); }


PowerShell de una sola línea para crear un archivo en C:/Temp para llenar el disco C: dejando solo 10 MB:

[io.file]::Create("C:/temp/bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID=''C:''").FreeSpace - 10MB).Close


Puedes probar este código C ++:

#include<stdlib.h> #include<iostream> #include<conio.h> #include<fstream> #using namespace std; int main() { int a; ofstream fcout ("big_file.txt"); for(;;a += 1999999999){ do{ fcout << a; } while(!a); } }

Tal vez tome un tiempo generar según la velocidad de su CPU ...


Puedes usar la herramienta Sysinternals Contig . Tiene un interruptor -n que crea un nuevo archivo de un tamaño determinado. A diferencia de fsutil , no requiere privilegios administrativos.


Respuesta simple en Python: si necesita crear un archivo de texto real grande, solo usé un bucle while y pude crear un archivo de 5 GB en unos 20 segundos. Sé que es crudo, pero es lo suficientemente rápido.

outfile = open("outfile.log", "a+") def write(outfile): outfile.write("hello world hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world"+"/n") return i=0 while i < 1000000: write(outfile) i += 1 outfile.close()


Utilizar:

/* Creates an empty file, which can take all of the disk space. Just specify the desired file size on the command line. */ #include <windows.h> #include <stdlib.h> int main (int argc, char* ARGV[]) { int size; size = atoi(ARGV[1]); const char* full = "fulldisk.dsk"; HANDLE hf = CreateFile(full, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); SetFilePointer(hf, size, 0, FILE_BEGIN); SetEndOfFile(hf); CloseHandle(hf); return 0; }



fsutil file createnew <filename> <length>

donde <length> está en bytes.

fsutil requiere privilegios administrativos sin embargo.