ปรับขนาดไฟล์ในพร้อมท์คำสั่ง?


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 มีแนวคิดที่สำคัญสองประการของความยาวไฟล์: ตัวทำเครื่องหมายจุดสิ้นสุดไฟล์ (EOF) และความยาวข้อมูลที่ถูกต้อง (VDL) EOF ระบุความยาวจริงของไฟล์ VDL ระบุความยาวของข้อมูลที่ถูกต้องบนดิสก์ การอ่านใด ๆ ระหว่าง VDL และ EOF จะคืนค่า 0 โดยอัตโนมัติเพื่อรักษาข้อกำหนดการใช้งานซ้ำของวัตถุ C2

  3. UVHDเป็นเครื่องมือแก้ไขฐานสิบหกที่ดูเหมือนจะมีฟังก์ชั่นที่คุณต้องการ ปัญหาเดียวก็คือมันทำงานได้เฉพาะใน Windows / SFU (Services for Unix) และไม่ใช่ DOS สิ่งที่จริงหมายถึงผู้ใช้ปลายทางที่ฉันไม่รู้จริง ๆ แต่ฉันมีความสงสัยที่คลุมเครือว่า SFU ถูกทิ้งใน Vista และ Win 7


1
อ่าโอเค. ขอบคุณtruncทำในสิ่งที่ฉันต้องการ โอ้และหมายเหตุ: SFU (หรือค่อนข้าง SUA - "ระบบย่อยสำหรับแอปพลิเคชันที่ใช้ Unix" หรือที่รู้จักว่า Interix) ไม่ได้ถูกทิ้งใน Windows 7; ตอนนี้มันเป็นเพียงส่วนประกอบเสริมในเวอร์ชั่น Ultimate เท่านั้น : \
user541686

อายุติธรรมพอฉันไม่สามารถหาข้อมูลเกี่ยวกับ SUA / SFU ได้มากมายแม้ว่าจะซื่อสัตย์ฉันไม่ได้มองอย่างใกล้ชิดเกินไป ฉันได้พบวิธีอื่นในการสร้างไฟล์ความยาวตามอำเภอใจโดยใช้fsutilและแก้ไขคำตอบของฉัน แต่ตามที่ฉันสังเกตเห็นฉันไม่เห็นวิธีที่ถูกต้องในการตัดไฟล์
Mokubai

โดยวิธีการที่ฉันคิดว่าฉันจะชี้ให้เห็นบางสิ่งบางอย่าง: ฉันเชื่อว่าความยาวของข้อมูลที่ถูกต้องคือความยาวเสมือนของไฟล์บนดิสก์ไม่ใช่ความยาวทางกายภาพ ตัวอย่างเช่นหากไฟล์นั้นถูกบีบอัดไฟล์อาจมีขนาดเล็กลงจริง ๆ - คุณต้องมีขนาดไฟล์ที่ถูกบีบอัด
user541686

5
copy /Y nul: file.txt

สำหรับการตั้งค่าเป็น 0 ไบต์เท่านั้นแน่นอน


2
เรื่องนี้ดูเหมือนจะไม่ตอบคำถาม
ประกาศเมื่อ

+1 ฉันยอมรับว่ามันไม่ใช่คำตอบที่ถูกต้อง แต่เป็นสิ่งที่ฉันมาที่นี่เพื่อค้นหาวิธีตัดทอนไฟล์จากบรรทัดคำสั่ง Windows
Dan Atkinson

2

หากคุณติดตั้ง GnuWin32 แล้วคุณสามารถใช้งานddได้

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

ศักยภาพของ dd ไม่เคยทำให้ฉันประหลาดใจเลยคำสั่งทำงานได้ แต่ถ้าไม่มี = nul
เกินไป

2

พยายามสร้างตัด BSD ของฉันสำหรับ Windows

แก้ไข: มันไม่ทำงานกับไฟล์> 2GB

ทางเลือกที่ทำงานได้ดีกับไฟล์ขนาดใหญ่:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.