Як створити порожній файл у командному рядку в 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: можна, звичайно, відповідно до вже опублікованих відповідей. Але чи дійсно ви вважаєте, що можливість швидкого створення порожнього файлу має бути пріоритетом для операційної системи, орієнтованої на кінцевих користувачів та потребує запуску в 16K оперативної пам’яті? Зрештою, це не особливо корисна справа, за винятком кількох рідкісних випадкових випадків.
Гаррі Джонстон

Відповіді:


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. І >тільки перенаправляє stdout, де нічого не було створено.
Звідси створення порожнього файлу. Повідомлення про помилку тут не враховується.


(Оригінальна відповідь, листопад 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
Нуфаль Ібрагім: не дозволяйте цьому дурити вас; просто дивіться наступну відповідь, яка має набагато простіше і однаково працююче рішення. Те, що тут робиться, частково неправильно в першому випадку (не порожній, але містить перерву рядка), а в другому - спосіб ускладнення.
Joey

1
@barlop Так: в цьому і полягає: він запускає повідомлення про помилку на stderr, але нічого (порожня рядок) у stdout. І >перенаправляти stdout тільки на out.txt. Звідси створення порожнього файлу. У цьому контексті ви можете не враховувати повідомлення про помилку.
VonC

270

Спробуйте це:

type NUL > 1.txt

це, безумовно, створить порожній файл.


Це додає "NUL є ./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

Просто перенаправляйте stdout на nul, і вихід з копії зникає.


1
Він не вдається, якщо файл file.txt існує.
Грендлер

6
Якщо я розумію питання, якщо файл існує, це хороша поведінка.
wallyk

32
+1. Дивовижно, як прийнята відповідь щось напівправильна і наполовину перекручена, тоді як, очевидно, правильний не отримує майже жодного кредиту. До цього додати: type nul>fileбув би інший спосіб.
Joey

@Joey прийнятий має купу рішень, які працюють над створенням порожнього файлу 0 байтів.
барлоп

2
@barlop: Для довідки, це була прийнята відповідь під час написання коментаря. Я не отримую повідомлення щоразу, коли відповідь змінюється, я посилаюсь у коментарі.
Joey

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 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

@Joey Чи не всі ці команди трохи для створення порожнього файлу? Навіть той, що нижче, на 120 очок, - це багато, коли ти звик торкатися.
Johnny

29
echo "" > filename

Я вважаю, що це працює в Windows / DOS, але мій останній практичний досвід з будь-яким із них був досить давно. Я фактично знаю, що він працює в основному на будь-якій ОСІ сумісній ОС.


2
Очевидно, відповідь VonC краща за мою, тому, будь ласка, підкажіть це замість цього.
Кріс

3
На жаль: echo "" відображає подвійні лапки, і вони записуються у файл, коли потік перенаправляється на нього. Те саме відбувається з просто: echo> ім'ям файлу, оскільки він пише, що 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

тож ви можете створити порожній файл за допомогою

'' > 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". Ви повинні побачити повідомлення про помилку всередині цього файлу.
Brent Rittenhouse


3

У Windows я спробував це зробити

echo off > fff1.txt

і він створив файл під назвою fff1.txt розміром файлу 0 кб

Я не знайшов жодної команди, крім цієї, яка могла б створити порожній файл.

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


не забудьте повторитись після створення файлу, якщо вам це потрібно.
QMaster

Ця команда заморожує cmd після натискання клавіші ENTER.
Kavin Raju S

Я не впевнений, чому це робиться, але я думаю, що вам слід зробити "відгомін" після введення вищевказаної команди.
Omkar Agrawal


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 для створення файлів. (Наприклад: 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.