Komut İsteminde Dosya Yeniden Boyutlandırılsın mı?


14

Bir dosyayı komut isteminden (veya toplu iş dosyasında) nasıl yeniden boyutlandırabilirim?

  • Dosyayı ikili olarak ele alması gerekir . Dosya biçimi alakasız ve keyfidir.

  • Dosyayı genişletmek, sıfırlarla doldurmalıdır.

  • Dosyayı küçültmek dosyayı kısaltmalıdır.

Diğer bir deyişle:

SetEndOfFileKomut isteminde işlevselliğini nasıl çoğaltırsınız ?


Diskpart'ı deneyebilirsiniz .
jpaugh

Yanıtlar:


10

İşlevin DOS kabuğunda doğal olarak bulunduğuna inanmıyorum, işi yapmak için başka bir program kullanmanız gerektiğinden şüpheleniyorum. İşte birkaç olasılık:

  1. Neyin peşinde olduğunuzu tam olarak iddia eden Trunc adında bir araç var :

    Trunc, dosyaları belirtilen bir boyuta kesmek için kullanılan bir Windows komut satırı uygulamasıdır. Bir dosyayı büyütmek için de kullanılabilir.

    Dosyanın nasıl doldurulduğunu öğrenmek için denemek zorunda kalacaksınız (örneğin, sıfırlar veya çöplerle), ancak aksi halde bu, istediğiniz şeyin faturasına uyuyor gibi görünüyor.

  2. fsutil , yardımcı olabilecek bazı işlevlere sahip gibi görünen bir Windows XP ve üzeri sistem aracıdır. Özellikle fsutil filealt komut, uzunluk ve sıfır dolgu dosyaları oluşturabilir, ayarlayabilir.

    özellikle:

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

    Sıfır dolu 1024 baytlık bir dosya oluşturur, ancak dosyayı kısaltmanın bir yolunu göremiyorum. Geçerli veri uzunluğunu ayarlayan bir komut var, ancak EOF işaretçisini şu şekilde değiştirmiyor:

    Setvaliddata kullanma

    NTFS'de dosya uzunluğu için iki önemli kavram vardır: Dosya Sonu (EOF) işaretçisi ve Geçerli Veri Uzunluğu (VDL). EOF, dosyanın gerçek uzunluğunu gösterir. VDL, diskteki geçerli verilerin uzunluğunu tanımlar. VDL ve EOF arasındaki tüm okumalar, C2 nesnesinin yeniden kullanım gereksinimini korumak için otomatik olarak 0 değerini döndürür.

  3. UVHD , istediğiniz fonksiyonlara sahip gibi görünen bir hex editörüdür. Tek sorun, yalnızca Windows / SFU (Services for Unix) altında çalıştığı ve DOS'ta çalışmamasıdır. Bu aslında son kullanıcı için ne anlama geliyor bilmiyorum, ama Vista ve Win 7'de SFU'nun düştüğüne dair belirsiz bir şüphem var.


1
Ah tamam. Teşekkürler, truncihtiyacım olanı yapıyor. Oh ve bir not: SFU (veya daha doğrusu SUA - "Unix Tabanlı Uygulamalar için Alt Sistem", diğer adıyla Interix) Windows 7'de bırakılmadı; şimdi Ultimate sürümünde talihsiz bir şekilde isteğe bağlı bir bileşen. : \
user541686

Ah, yeterince adil, dürüst olmak gerekirse çok yakından bakmadım ama SUA / SFU hakkında bilgi yolunda fazla bulamadım. Ayrıca keyfi uzunluklu dosyalar oluşturmak için başka bir yol buldum fsutilve cevabımı düzenledim, ancak belirttiğim gibi dosyaları kısaltmak için geçerli bir yol göremiyorum.
Mokubai

Bu arada, bir şeyi işaret ettiğimi düşündüm: Geçerli veri uzunluğunun, fiziksel uzunluk değil, diskteki dosyanın sanal uzunluğu olduğuna inanıyorum . Dosya sıkıştırılmışsa, örneğin, gerçekten daha küçük olabilir - dosyanın sıkıştırılmış boyutuna ihtiyacınız olacaktır.
user541686

5
copy /Y nul: file.txt

Tabii ki sadece 0 bayta ayarlamak için.


2
Bu soruya gerçekten cevap vermiyor gibi görünüyor.
Manishearth

+1 Doğru yanıt olmadığını kabul ediyorum ama tam olarak buraya aradığım şey - bir dosyayı Windows komut satırından nasıl kısaltacağımı kabul ediyorum.
Dan Atkinson

2

GnuWin32 yüklüyse, ddbunu yapmak için kullanabilirsiniz .

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

dd potansiyeli beni şaşırtmaktan asla vazgeçmez, komut çalışır ama if = nul olmadan.
Çok

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.