同じ静脈ではすぐには、Linuxシステム上の大きなファイルを作成し、私はすぐにWindowsシステム上で大きなファイルを作成したいと思います。概して私は5 GBを考えています。内容は関係ありません。組み込みコマンドまたは短いバッチファイルが望ましいですが、他に簡単な方法がない場合は、アプリケーションを受け入れます。
同じ静脈ではすぐには、Linuxシステム上の大きなファイルを作成し、私はすぐにWindowsシステム上で大きなファイルを作成したいと思います。概して私は5 GBを考えています。内容は関係ありません。組み込みコマンドまたは短いバッチファイルが望ましいですが、他に簡単な方法がない場合は、アプリケーションを受け入れます。
回答:
fsutil file createnew <filename> <length>
どこ<length>
バイトです。
fsutil
ただし、管理者権限が必要です。
fsutil file createnew
はスパースファイルを作成しません: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
Sysinternals Contigツールを使用できます。-n
指定されたサイズの新しいファイルを作成するスイッチがあります。とは異なりfsutil
、管理者権限は必要ありません。
contig
効果的に最後のバイトに移動し、0
そこにシングルを書き込みます(プロセスモニターで確認するだけです)。その後、Windowsは残りをゼロで埋めます。これはおそらく非スパースファイルと同じくらい効率的であり、サイズが約5 GiBのファイルの作成は、私のハードディスク上でも数秒しかかかりません。おそらく、SSDまたは小さいファイルで試してみました。しかし、それはかなり高速です(そして自分で空のファイルのすべてのバイトを書き込むよりも間違いなく高速です。)
スパースファイルだけでなく、データを含む大きなファイルを生成する方法を探していました。以下のテクニックに出会いました:
実際のデータを含むファイルを作成する場合は、以下のコマンドラインスクリプトを使用できます。
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
(上記の2つのコマンドを順番に実行するか、バッチファイルに追加できます。)
上記のコマンドは、数秒以内に1 MBのファイルdummy.txtを作成します...
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
(上記の2つのコマンドを次々に実行するか、バッチファイルに追加できます。)上記のコマンドは、数秒以内に1 MBのファイルdummy.txtを作成します。
RDFCをチェックhttp://www.bertel.de/software/rdfc/index-en.html
RDFCはおそらく最速ではありませんが、データブロックを割り当てます。最速の方法は、クラスターチェーンを取得してデータを書き込まずにMFTに入れるために、低レベルのAPIを使用することです。
ここに特効薬はないことに注意してください。「作成」がすぐに返された場合、大きなファイルを偽装したスパースファイルを取得しますが、書き込むまでデータブロック/チェーンを取得できません。読んだだけの場合、非常に高速なゼロが得られるため、ドライブが突然すべて高速になったと信じることができます:-)
Windows Server 2003リソースキットツールを確認します。Creatfilというユーティリティがあります。
CREATFIL.EXE
-? : This message
-FileName -- name of the new file
-FileSize -- size of file in KBytes, default is 1024 KBytes
Solarisのmkfileに似ています。
テストには通常の10 GBファイルが必要だったので、fsutil
スパースファイルが作成されるため使用できませんでした(@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
10 GBのファイルを作成したかったのですが、なんらかの理由で4 GBしか表示されなかったため、安全に4 GBで停止したかったのです。ファイルがオペレーティングシステムや他のアプリケーションによって適切に処理されることを確認したい場合は、1 GBでの展開を停止してください。
rm
はUnix / Linuxコマンドdel
ですが、DOS / Windowsコマンドですか?...
%i
ますが、バッチファイルではダブルパーセント記号が使用されます%%i
。
@echo off
ので、明らかに.bat
です。そのため、パーセント記号が2倍になりました。
file-4gb.txt
作成する前になぜ削除するのですか?それはエラーになりませんか?実際file-4gb.txt
にそのラインで作成するつもりでしたか?または、古いfile-big.txt
ファイルの名前を変更しますか?これは、バッチファイルの場合でも不明確です。名前を変更するつもりなら、探していたコマンドはおそらくren
です。のようにren file-big.txt file-4gb.txt
。あなたはそれをと混同したと思いますrm
。
完全なアプリケーションを作成する前に、Pythonの人たちは、WindowsとLinuxで同じスニペットである4行で任意のサイズのファイルを実現できます(os.stat()
行は単なるチェックです)。
>>> 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
>>>
C:\Temp
ディスクCを埋めるためにファイルを作成するPowerShellワンライナー:10 MBのみを残します:
[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
使用する:
/*
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;
}
int
?これは5 GBのファイルで機能しますか?これは2 GBまたは4 GBに制限されていますか?の3番目のパラメーターSetFilePointer()
が0であることは、5 GBのファイルでは機能しないことを示しています。
最近、スペースを割り当てて大きなダミーファイルを作成する方法を探していました。すべてのソリューションは扱いにくいように見えます。最後にDISKPART
、Windowsでユーティリティを開始しました(Windows Vista以降に組み込まれています)。
DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED
どこ最大値は、ここで結果のファイルのサイズは20 GBです。
https://github.com/acch/genfilesで設定可能な優れたユーティリティを見つけました。
ターゲットファイルをランダムデータで満たすため、スパースファイルに問題はありません。また、私の目的(圧縮アルゴリズムのテスト)では、適切なレベルのホワイトノイズが得られます。
一時ファイルはWindowsの一時フォルダに保存する必要があります。Rodからの回答に基づいて、次の1つのライナーを使用して、ファイル名を返す5 GBの一時ファイルを作成できます。
[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }
説明:
[System.IO.Path]::GetTempFileName()
Windows Tempフォルダにランダムな拡張子のランダムなファイル名を生成します[System.IO.File]::Create($_)
、ファイルを作成する名前を渡すために使用されます.SetLength(5gb)
。PowerShellがバイト変換をサポートしていることを発見して、私は少し驚きました。これは本当に便利です。.close
他のアプリケーションがアクセスできるようにするには、ファイルハンドルを閉じる必要があります;$_
ファイル名が返されてそして| ? { $_ }
それはファイル名だけが返されることが確実とされていない空の文字列が返されたことにより、[System.IO.File]::Create($_)
私が見つけた最も簡単な方法は、この無料のユーティリティです:http : //www.mynikko.com/dummy/
スペースまたは非圧縮コンテンツ(選択)で埋められた任意のサイズのダミーファイルを作成します。これがスクリーンショットです:
プレーンol 'C ...これは、Windows XXのMinGW GCCの下で構築され、あらゆる「汎用」Cプラットフォームで動作するはずです。
指定されたサイズのnullファイルを生成します。結果のファイルは、単なるディレクトリスペース占有エントリではなく、指定されたバイト数を実際に占有します。閉じる前に書き込まれたバイトを除いて、実際の書き込みは発生しないため、これは高速です。
私のインスタンスはゼロでいっぱいのファイルを生成します-これはプラットフォームによって異なる可能性があります。このプログラムは基本的に、データがぶら下がっているすべてのディレクトリ構造を設定します。
#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);
}
http://www.scribd.com/doc/445750/Create-a-Huge-FileでDEBUGを使用した解決策を見つけましたが、簡単なスクリプトの作成方法がわからず、実行できないようです。 1 GBより大きいファイルを作成します。
...数秒以内に1 MBのファイルdummy.txt。
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
ここを参照してください:http : //www.windows-commandline.com/how-to-create-large-dummy-file/
次の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);
}
}
CPUの速度によっては、生成に時間がかかる場合があります...
Pythonでの単純な答え:大きな実際のテキストファイルを作成する必要がある場合は、単純なwhile
ループを使用しただけで、5 GBのファイルを約20秒で作成できました。私はそれが粗雑であることを知っていますが、それは十分に速いです。
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()
キーボードですばやく実行したり入力したりできますか?WindowsでPythonを使用している場合、これを試すことができます。
cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
fsutil
選択した回答で述べたのと同じ方法にいくつかの追加を行いました。これは、多くの異なる拡張子やさまざまなサイズのファイルを作成するためです。
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
コードはhttps://github.com/iamakidilam/bulkFileCreater.gitから複製できます