Как создать пустой текстовый файл из пакетного файла? - PullRequest
222 голосов
/ 17 октября 2008

Может кто-нибудь вспомнить, какой была команда для создания пустого файла в MSDOS с использованием BAT-файла?

Ответы [ 11 ]

332 голосов
/ 17 октября 2008
copy NUL EmptyFile.txt

DOS имеет несколько специальных файлов (фактически устройств), которые существуют в каждом каталоге, NUL является эквивалентом /dev/null UNIX: это волшебный файл, который всегда пуст и выбрасывает все, что вы пишете в него. Вот список некоторых других; CON иногда также полезен.

Чтобы вообще не иметь выхода, вы можете использовать

copy /y NUL EmptyFile.txt >NUL

/y не позволяет copy задать вопрос, который вы не видите, когда вывод переходит к NUL.

224 голосов
/ 17 октября 2008
echo. 2>EmptyFile.txt
173 голосов
/ 17 ноября 2008
type NUL > EmptyFile.txt

После прочтения двух предыдущих постов, эта смесь двух - вот что я придумал. Кажется, немного чище. Не нужно беспокоиться о перенаправлении "1 файла (ов) скопировано". сообщение NUL, как и в предыдущем посте, и выглядит хорошо рядом с ECHO OutputLineFromLoop >> Emptyfile.txt, который обычно следует в пакетном файле.

56 голосов
/ 18 апреля 2014

Техник, которые я собрал из других ответов:

Делает 0-байтовый файл очень понятным, обратно совместимым способом:

type nul >EmptyFile.txt

идея через: аноним , Дэнни Бакетт , возможно, другие, меня вдохновили работы JdeBP

0-байтовый файл другим способом , он выглядит обратно совместимым:

REM. >EmptyFile.txt

идея через: Йоханнес

0-байтовый файл 3-й путь и обратно-совместимый вид:

echo. 2>EmptyFile.txt

идея через: TheSmurf

0-байтовый файл систематическим способом возможно доступно с Windows 2000:

fsutil file createnew EmptyFile.txt 0

идея через: Эмм

Файл 0 байтов перезаписывает файлы только для чтения

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

идея через: авторское право

Одна новая строка (2 байта: 0x0D 0x0A в шестнадцатеричная запись , альтернативно записанная как \r\n):

echo.>AlmostEmptyFile.txt

Примечание: нет пробел между echo, . и >.

идея через: Как вы можете повторить новую строку в пакетных файлах?


edit Кажется, что любая недопустимая команда перенаправленная в файл создаст пустой файл. хех, фича! совместимость: неизвестно

TheInvisibleFeature <nul >EmptyFile.txt

Файл 0 байт: недопустимая команда / со случайным именем (совместимость: неизвестно):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

через: отличный источник для случайных Хунг Хайн

edit 2 Andriy M указывает , вероятно, самый забавный / провокационный способ добиться этого с помощью неверной команды

Файл 0 байт: недопустимая команда / необычный способ (совместимость: неизвестна)

*>EmptyFile.txt

идея через: Андрей М

Файл 0 байт, 4-й путь :

break > file.txt

идея через: foxidrive благодаря комментарию из Double Gras !

25 голосов
/ 12 апреля 2010

REM. > empty.file

8 голосов
/ 27 февраля 2012

Если существует вероятность того, что записываемый файл уже существует и доступен только для чтения, используйте следующий код:

ATTRIB -R filename.ext
CD .>filename.ext

Если файла не существует, просто выполните:

CD .>filename.ext

(обновлен / изменен код в соответствии с комментарием DodgyCodeException)

Чтобы устранить любые ошибки, которые могут возникнуть:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL
7 голосов
/ 18 июля 2014

Еще один, чтобы добавить к книгам - короткий и сладкий, чтобы напечатать.

break>file.txt
break>"file with spaces in name.txt"
7 голосов
/ 01 апреля 2011
fsutil file createnew file.cmd 0
2 голосов
/ 25 августа 2009

Вы можете использовать команду TYPE вместо COPY. Попробуйте это:

TYPE File1.txt>File2.txt

Где File1.txt пусто.

1 голос
/ 07 августа 2014

Вы также можете использовать SET для создания пустого byte файла следующим образом

set x=x > EmptyFile.txt

Или, если вы не хотите создавать дополнительную переменную, переназначьте существующую переменную, например

set PROMPT=%PROMPT% > EmptyFile.txt

или как это:

set "PROMPT=%PROMPT%" > EmptyFile.txt
...