Как создать пустой файл в командной строке в Windows?


494

Как создать пустой файл в командной строке DOS / Windows?

Я старался:

copy nul > file.txt

но это всегда показывает, что файл был скопирован.

Есть ли другой способ в стандартном cmd?

Это должен быть метод, который не требует сенсорной команды от Cygwin или любых других нестандартных команд. Команду необходимо запустить из сценария, чтобы нельзя было использовать нажатия клавиш.


Только что обнаружил настоящую пакетную команду, приводящую к пустому файлу (0 байт): я обновил свой ответ.
VonC

3
Дубликат: stackoverflow.com/questions/210201 , «Как создать пустой текстовый файл из пакетного файла?». (Но, ИМХО, ответы здесь лучше.)
Питер Мортенсен

Да, команда copy nul> file.txt создана с текстом «1 файл (ов) скопирован». Пустой файл не создан.
Рипон Аль Васим

5
Для меня это просто доказывает, что MS-DOS является мусором, если вы не можете создать простой пустой файл с помощью одной команды.
Каньон Колоб

2
@KolobCanyon: вы можете, конечно, за ответы, уже размещенные. Но действительно ли вы считаете, что возможность быстрого создания пустого файла должна быть приоритетом для операционной системы, ориентированной на конечных пользователей и требующей работы в 16 КБ ОЗУ? В конце концов, это не очень полезная вещь, за исключением нескольких редких крайних случаев.
Гарри Джонстон

Ответы:


571

Без перенаправлении Люк Vu или Эрик Константопулос указывают вне к:

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt

« Как создать пустой текстовый файл из пакетного файла? » (2008) также указывает на:

type NUL > EmptyFile.txt
# also
echo. 2>EmptyFile.txt
copy nul file.txt > nul # also in qid's answer below
REM. > empty.file
fsutil file createnew file.cmd 0 # to create a file on a mapped drive

Кочевник упоминает оригинальный :

C:\Users\VonC\prog\tests>aaaa > empty_file
'aaaa' is not recognized as an internal or external command, operable program or batch file.

C:\Users\VonC\prog\tests>dir

 Folder C:\Users\VonC\prog\tests

27/11/2013  10:40    <REP>          .
27/11/2013  10:40    <REP>          ..
27/11/2013  10:40                 0 empty_file

В том же духе Самуил предлагает в комментариях :

самый короткий, который я использую, в основном, от Nomad:

.>out.txt

Это дает ошибку:

'.' is not recognized as an internal or external command

Но эта ошибка на stderr. И >только перенаправляет стандартный вывод, где ничего не было произведено.
Отсюда и создание пустого файла. Сообщение об ошибке можно игнорировать здесь.


(Оригинальный ответ, ноябрь 2009 г.)

echo.>filename

( echo ""фактически поместил бы "" в файл! И echoбез "." вставил бы " Command ECHO activated" в файл ...)

Примечание: полученный файл не пустой, но содержит последовательность обратной строки: 2 байта.


Это обсуждение указывает на настоящее пакетное решение для реального пустого файла:

 <nul (set/p z=) >filename

 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

« <nul» Передает nulответ на set/pкоманду, в результате чего используемая переменная остается неизменной. Как обычно set/p, строка справа от знака равенства отображается как подсказка без CRLF.

Так как здесь «строка справа от знака равенства» пуста ... результатом является пустой файл.


Разница с cd. > filename(которая упоминается в ответе Патрика Каффа и также создает файл длиной 0 байт) состоит в том, что этот «бит перенаправления» ( <nul...трюк) можно использовать для отображения строк без какого-либо CR :

<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt

Команда dirдолжна указывать размер файла в 11 байтов: " helloworld!".


2
Вы бы на самом деле хотели, echo.>filenameпотому что он будет включать пробел, а также символ новой строки.
Agent_9191

1
Использование remкоманды позволяет избежать создания файла с пустой строкой.
Грег Хьюгилл

@ Agent_9191: правда, я обновил свой ответ. @Greg: не уверен, что вы имеете в виду: rem>filenameдает тот же результат (2 байта)
VonC

3
Нуфал Ибрагим: не позволяй этому обмануть тебя; просто посмотрите следующий ответ, который имеет гораздо более простое и одинаково работающее решение. То, что сделано здесь, частично неверно в первом случае (не пусто, но содержит разрыв строки), а во втором - слишком сложно.
Джои

1
@barlop Да: в этом суть: он вызывает некоторое сообщение об ошибке в stderr, но ничего (пустая строка) в stdout. И >перенаправить стандартный вывод только на out.txt. Отсюда и создание пустого файла. Вы можете игнорировать сообщение об ошибке в этом контексте.
VonC

270

Попробуй это:

type NUL > 1.txt

это определенно создаст пустой файл.


Это добавляет "NUL is ./NUL" в файл
dshgna

106

Вот еще один способ:

cd. > filename

11
cd. > filenameэто не работа для меня, а не cd > filename работает!
NaveenDA

3
«cd.> filename» создает пустой файл, иначе у вас будет напечатан путь к файлу во вновь созданном файле с помощью команды «cd> filename».
niketan

6
Используйте это: Это cd . > filename.extensionозначает, что вам нужно пространство между cdи.
Aion

77

Если вы действительно хотите полностью пустой файл без вывода на stdout, вы можете немного обмануть:

copy nul file.txt > nul

Просто перенаправьте стандартный вывод на nul, и вывод из копии исчезнет.


1
Сбой, если файл .txt существует.
Грендлер

6
Сбой, если файл существует, это хорошее поведение, как я понимаю вопрос.
Wallyk

32
+1. Удивительно, как принятый ответ является чем-то наполовину неправильным и наполовину запутанным, в то время как явно правильный ответ почти не заслуживает доверия. Чтобы добавить к этому: type nul>fileбыл бы другой способ.
Джои

@ Придерживайтесь принятого решения, у которого есть множество решений, которые работают для создания пустого 0-байтового файла.
Барлоп

2
@barlop: Для справки, это был принятый ответ на момент написания комментария. Я не получаю уведомления каждый раз, когда меняется ответ, на который я ссылаюсь в комментарии.
Джои

48

Открыть файл :

type file.txt

Новый файл :

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>

Редактировать контент:

notepad file.txt

копия

copy file1.txt file1Copy.txt

Rename

rename file1.txt file1_rename.txt

Удалить файл :

del file.txt

Хороший обзор команд cmd
KargWare

32

Читая комментарии к моему посту, я должен признать, что неправильно прочитал вопрос.

В командной строке Windows одним из способов будет использование fsutil :

fsutil file createnew <filename> <size>

Пример:

fsutil file createnew myEmptyFile.txt 0

Ниже для командной строки * nix.

touch filename

Эта команда изменяет дату изменения файла или создает ее, если файл не найден.


К сожалению, вопрос конкретно гласит: «Без команды касания от Cygwin».
QID

3
Существуют не-Cygwin реализации сенсорной команды: unxutils.sourceforge.net - это хорошо.
Грег Хьюгилл

В * nix я лично неравнодушен к простому > filename, который также можно использовать для усечения существующего файла.
Франк Фармер

fsutilнужны административные привилегии. Это слишком много, чтобы попросить просто создать пустой файл ...
Joey

@ Джои Не слишком ли много этих команд для создания пустого файла? Даже тот, который ниже со 120 очками - это много, когда вы привыкли к прикосновению.
Джонни

29
echo "" > filename

Я считаю, что это работает на Windows / DOS, но мой последний практический опыт работы с любым из них был довольно давно. Я точно знаю, что он работает практически на любой POSIX- совместимой ОС.


2
К счастью, ответ VonC лучше, чем мой, поэтому, пожалуйста, подтвердите это.
Крис

3
К сожалению: echo "" отображает двойные кавычки, и они записываются в файл, когда поток перенаправляется на него. То же самое происходит с просто: echo> filename, потому что он пишет, что ECHO выключен / включен в файл.
Грендлер

Может быть, вы могли бы поставить "@echo off" в строке перед созданием файла, чтобы обойти это?
Крис

27
call>file.txt

это самый чистый способ, который я знаю.


Что в этом "чистого"?
GreenAsJade

4
он ничего не выводит в файл, в то время как его легко запомнить и использовать.
nephi12

Это было самое простое решение, которое работает и которое легче всего запомнить.
nhershy

12
cd > filename.cfg 

работал при создании файла в C: / Program Files, где у вас нет доступа для непосредственного создания файлов.


11

Вы можете написать свой собственный штрих.

//touch.cpp
#include <fstream>
#include <iostream>

int main(int argc, char ** argv;)
{
  if(argc !=2)
  {
    std::cerr << "Must supply a filename as argument" << endl;
    return 1;
  }
  std::ofstream foo(argv[1]);
  foo.close();
  return 0;
}

6

скопировать con SomeFile.txt Enter

Ctrl-Z Enter


Я уточнил вопрос, что команда будет запускаться из скрипта, поэтому, к сожалению, любое взаимодействие с клавиатурой не работает. Все равно спасибо.
Грендлер

6

Еще один метод, который создает файл нулевого байта:

break > "file.txt"

6

так что вы можете создать пустой файл с

'' > newfile.txt

перейдите в каталог и введите указанную выше команду в окне PowerShell.

Обратите внимание, что это не будет работать в командной строке Windows.


5

Попробуйте это: во- abc > myFile.txt первых, он создаст файл с именем myFile.txtв текущем рабочем каталоге (в командной строке). Затем он выполнит команду, abcкоторая не является допустимой. Таким образом, вы получили новый пустой файл с именем myFile.txt.


2
Это может быть очень неправильно, если он abcнаходится в пути и является удобной функцией для форматирования всех дисков, кроме каталога установки.
Кровоточащие пальцы

5

type nul>filename создаст новый пустой файл.

Извините, я опоздал.

ОБНОВЛЕНИЕ : также copy nul filenameработает без перенаправления (более очевидное решение).



4

Вы также можете использовать:

echo. 2>foo

Отладочный вывод для echo.почти наверняка будет пустым.


4

Я читаю много тем, но это не самый короткий путь.

Пожалуйста, используйте команду:

>copy /b NUL empty_file.txt


4

Вы можете использовать старую команду

copy con file_name.ext

ничего не вводите, просто нажмите F6, чтобы сохранить его, однако он напечатает «Файл скопирован», но когда вы откроете файл, он будет пуст


4

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

введите nul> (имя_файла). (тип_файла)

Например. Если вы хотите создать текстовый файл, то

введите nul> demo.txt

Если вы хотите создать файл JavaScript, то

введите nul> demo.js


3

Это сработало для меня,

echo > file.extension

Вот еще один способ, который я нашел сегодня, получил идеи из других ответов, но это сработало

sometext > filename.extension

Например.

xyz > emptyfile.txt  //this would create an empty zero byte text file
abc > filename.mp4   //this would create an zero byte MP4 video media file

Это покажет сообщение об ошибке в командной строке, что,

xyz не является внутренней или внешней командой, работающей программой или командным файлом.

Но странная вещь, которую я обнаружил, заключалась в том, что файл создается в каталоге, даже если эта команда не является стандартной командой Windows.


1
Существует более одного «дескриптора», который консольные приложения могут читать / записывать. Стандартными являются: (0) STDIN, (1) STDOUT и (2) STDERR. Я полагаю, что причина вашего трюка в том, что весь вывод идет на обработку ошибки, а вы только направляете STDOUT в файл. Попробуйте выполнить: «xyz> emptyfile.txt 2> & 1», чтобы перенаправить STDERR на то, что использует STDOUT, что, как правило, перенаправляет на «emptyfile.txt». Теперь вы должны увидеть сообщение об ошибке внутри этого файла.
Брент Риттенхаус


3

На Windows я пытался сделать это

echo off > fff1.txt

и он создал файл с именем fff1.txt с размером файла 0 КБ

Я не нашел никаких команд, кроме этой, которые могли бы создать пустой файл.

Примечание. Вы должны находиться в каталоге, в котором вы хотите создать файл.


не забудьте включить после создания файла, если вам нужно.
QMaster

Эта команда останавливает cmd после нажатия ENTER.
Кавин Раджу С

Я не уверен, почему это так, но я думаю, что вы должны сделать «echo on» после ввода вышеуказанной команды.
Омкар Агравал


2

Просто я пробовал в окнах

copy con file.txt

затем нажмите Enterклавишу затем нажмитеCtrl+Z Enter

И это сработало для меня.

Для Ubuntu обычно я создаю файл с помощью команды VI

vi file.txt

Он откроет файл, затем нажмите ESCклавишу, затем введите : wp, затем нажмите enterклавишу. Это создаст новый файл с пустыми данными.


2
  • создать файл bat с контентом echo '' > %1. (назовите файл как touch.bat)
  • добавьте папку в переменную PATH.
  • Вы можете использовать сенсорный для создания файлов. (Пример: touch temp.txtсоздает файл temp.txt)

проверьте эту статью для получения дополнительной информации.


1

Сегодня я обнаружил новый :)

Это изменит заголовок окна командной строки, но также создаст пустой файл.

title > file.txt

1

Запустите CMD в режиме адмистратора и введите:

NUL > file_name.extention

или вы печатаете это

echo .> file_name.extention

1

Вот еще один способ:

rem/ > file.ext

Косая черта /обязательна; без этого часть перенаправления была закомментирована rem.


0

Сначала создайте свой файл, чтобы он существовал:

echo . > myfile.txt

Затем перезаписать созданный файл пустой версией, используя copyкоманду:

copy /y nul myfile.txt
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.