Ubah Ukuran File di Command Prompt?

14

Bagaimana cara mengubah ukuran file dari prompt perintah (atau dalam file batch)?

  • Perlu memperlakukan file sebagai biner . Format file tidak relevan dan sewenang-wenang.

  • Memperluas file harus pad dengan nol.

  • Mengecilkan file harus memotong file.

Dengan kata lain:

Bagaimana Anda menduplikasi fungsi SetEndOfFiledalam command prompt?

pengguna541686
sumber
Anda dapat mencoba diskpart .
jpaugh

Jawaban:

10

Saya tidak percaya fungsionalitas ada secara asli di shell DOS, saya kira Anda perlu menggunakan program lain untuk menyelesaikan pekerjaan. Berikut ini beberapa kemungkinan:

  1. Ada alat bernama Trunc yang mengklaim untuk melakukan apa yang Anda cari:

    Trunc adalah aplikasi baris perintah Windows untuk memotong file ke ukuran tertentu. Juga dapat digunakan untuk memperbesar file.

    Anda harus mencobanya untuk mengetahui bagaimana tepatnya file tersebut menjadi empuk (misalnya dengan angka nol atau sampah) tetapi jika tidak, ini tampaknya sesuai dengan tagihan dari apa yang Anda minta.

  2. fsutil adalah alat sistem Windows XP dan di atas yang tampaknya memiliki beberapa fungsi yang mungkin membantu. Secara khusus, fsutil filesub- perintah tampaknya dapat membuat, mengatur panjang, dan juga nol mengisi file.

    Secara khusus:

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

    Akan membuat file 1024 byte yang diisi nol, tetapi saya tidak dapat melihat cara untuk memotong file. Ada perintah yang menetapkan panjang data yang valid, tetapi tampaknya tidak mengubah penanda EOF sebagai:

    Menggunakan setvaliddata

    Dalam NTFS, ada dua konsep penting panjang file: penanda End of File (EOF) dan Valid Data Length (VDL). EOF menunjukkan panjang aktual file. VDL mengidentifikasi panjang data yang valid pada disk. Setiap pembacaan antara VDL dan EOF secara otomatis mengembalikan 0 untuk menjaga persyaratan objek C2 digunakan kembali.

  3. UVHD adalah hex editor yang tampaknya memiliki fungsi yang Anda minta. Satu-satunya masalah adalah bahwa itu hanya bekerja di bawah Windows / SFU (Layanan untuk Unix) dan bukan DOS. Apa artinya itu bagi pengguna akhir yang sebenarnya tidak saya kenal, tapi saya curiga bahwa SFU dijatuhkan di Vista dan Win 7.

Mokubai
sumber
1
Ah baiklah. Terima kasih, trunclakukan apa yang saya butuhkan. Oh, dan sebuah catatan: SFU (atau lebih tepatnya, SUA - "Subsistem untuk Aplikasi Berbasis Unix", alias Interix) tidak dijatuhkan di Windows 7; itu baru saja komponen opsional dalam versi Ultimate, tanpa disayangkan. : \
user541686
Ah, cukup adil, saya tidak dapat menemukan banyak informasi tentang SUA / SFU meskipun jujur ​​saja saya tidak melihat terlalu dekat. Saya juga menemukan cara lain untuk membuat file panjang sewenang-wenang menggunakan fsutildan mengedit jawaban saya, tetapi seperti yang saya perhatikan saya tidak dapat melihat cara yang valid untuk memotong file.
Mokubai
By the way, saya pikir saya akan menunjukkan sesuatu: Saya percaya panjang data yang valid adalah panjang virtual file pada disk, bukan panjang fisik . Jika file dikompresi, misalnya, sebenarnya bisa lebih kecil - Anda perlu ukuran file terkompresi.
user541686
5
copy /Y nul: file.txt

Untuk pengaturan ke 0 byte saja, tentu saja.

KipB7
sumber
2
Ini sepertinya tidak menjawab pertanyaan.
Manishearth
+1 Saya setuju bahwa itu bukan jawaban yang tepat, tetapi itulah tepatnya yang saya cari di sini - cara memotong file dari baris perintah Windows.
Dan Atkinson
2

Jika Anda telah menginstal GnuWin32, maka Anda dapat menggunakannya dduntuk melakukannya.

dd if=nul of=/the/file/to/truncate bs=1 count=0 seek=the_file_size oflag=append
dapat saya lakukan
sumber
dd potensi tidak pernah berhenti membuatku takjub, perintah bekerja tetapi tanpa if = nul.
juga