Изменение размера файла в командной строке?

Как изменить размер файла из командной строки (или в пакетном файле)?

  • файл должен обрабатываться как binary. формат файла не имеет значения и произвольной.

  • расширение файла должно дополнять его нулями.

  • сжатие файла должно привести к его усечению.

другими словами:

как дублировать функциональность SetEndOfFile в командной строке?

26
задан Journeyman Geek
10.12.2022 13:01 Количество просмотров материала 2632
Распечатать страницу

4 ответа

Я не считаю, что функциональность существует изначально в оболочке 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 (службы для Unix), а не DOS. Что это на самом деле означает для конечного пользователя, которого я на самом деле не знаю, но у меня есть смутное подозрение, что СФУ был отброшен в Vista и Win 7.

10
отвечен Mokubai 2022-12-11 20:49
copy /Y nul: file.txt

для установки только 0 байт, конечно.

4
отвечен KipB7 2022-12-11 23:06

Если у вас установлен GnuWin32, то вы можете использовать dd сделать это.

dd if=nul of=/the/file/to/truncate bs=1 count=0 seek=the_file_size oflag=append
2
отвечен icando 2022-12-12 01:23

try моя сборка BSD truncate для Windows.

EDIT: он не работает с файлами >2GB.

альтернативы, которые хорошо работают с большими файлами:

2
отвечен eadmaster 2022-12-12 03:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх