コマンドプロンプトでファイルのサイズを変更しますか?


14

コマンドプロンプトから(またはバッチファイルで)ファイルのサイズを変更するにはどうすればよいですか?

  • ファイルをバイナリとして扱う必要があります。ファイル形式は無関係で任意です。

  • ファイルを拡張すると、ゼロが埋め込まれます。

  • ファイルを縮小すると、ファイルが切り捨てられます。

言い換えると:

SetEndOfFileコマンドプロンプトの機能をどのように複製しますか?


diskpartを試すことができます。
jpaugh

回答:


10

機能がDOSシェルにネイティブに存在するとは思わない。仕事を終わらせるには別のプログラムを使用する必要があると思う。以下にいくつかの可能性を示します。

  1. Truncと呼ばれるツールを使用すると、自分が望んでいることを正確に行うことができます。

    Truncは、指定されたサイズにファイルを切り捨てるためのWindowsコマンドラインアプリです。ファイルの拡大にも使用できます。

    ファイルをどのようにパディングするか(たとえば、ゼロまたはゴミ)を正確に調べるには、試してみる必要があります。

  2. fsutilはWindows XP以上のシステムツールであり、役立つ可能性のある機能を備えているようです。具体的には、このfsutil fileサブコマンドは、長さを設定し、ファイルをゼロに設定できるように見えます。

    具体的には:

    fsutil file createnew "C:\temp\myfile" 1024

    ゼロで埋められた1024バイトのファイルを作成しますが、ファイルを切り捨てる方法がわかりません。有効なデータ長を設定するコマンドがありますが、EOFマーカーを次のように変更するようには見えません。

    setvaliddataの使用

    NTFSには、ファイル長に2つの重要な概念があります。ファイルの終わり(EOF)マーカーと有効なデータ長(VDL)です。EOFは、ファイルの実際の長さを示します。VDLは、ディスク上の有効なデータの長さを識別します。VDLとEOFの間の読み取りは、C2オブジェクトの再利用要件を維持するために自動的に0を返します。

  3. UVHDは、あなたが求めている機能を持っているように見える16進エディタです。唯一の問題は、DOSではなくWindows / SFU(Unix用サービス)でのみ機能することです。それがエンドユーザーにとって実際に何を意味するのか私は実際には知りませんが、SFUがVistaとWin 7で削除されたという漠然とした疑いがあります。


1
うん、いいよ。おかげで、trunc私は必要なことをします。ああ、そして注意:SFU(または、むしろ、SUA-"Unixベースアプリケーションのサブシステム"、別名Interix)は、Windows 7では削除されませんでした。それは今だオプション unfortuntately、究極のバージョンでコンポーネント。:\
user541686

ああ、結構、私はSUA / SFUに関する情報をあまり見つけることができませんでしたが、正直なところ、あまりよく見ていませんでした。またfsutil、回答を使用して任意の長さのファイルを作成する別の方法を見つけましたが、先ほど触れたように、ファイルを切り捨てる有効な方法がわかりません。
木梅

ところで、私は何かを指摘したいと思いました。有効なデータの長さは、物理的な長さではなく、ディスク上のファイルの仮想的な長さだと思います。たとえば、ファイルが圧縮されている場合、実際にはファイルのサイズが小さくなる可能性があります。ファイルの圧縮サイズが必要になります。
user541686

5
copy /Y nul: file.txt

もちろん、0バイトにのみ設定します。


2
これは本当に質問に答えていないようです。
マニッシュアース

+1私はそれが正しい答えではないことに同意しますが、それはまさに私が探していたものです-Windowsコマンドラインからファイルを切り捨てる方法です。
ダンアトキンソン

2

GnuWin32がインストールされている場合は、それを使用ddして使用できます。

dd if=nul of=/the/file/to/truncate bs=1 count=0 seek=the_file_size oflag=append

ddの可能性が私を驚かせることはありません。コマンドは機能しますが、if = nulがありません。
あまりにも

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.