Bagaimana cara membuat file kosong di baris perintah di Windows?

494

Bagaimana cara membuat file kosong di baris perintah DOS / Windows?

Saya mencoba:

copy nul > file.txt

tetapi selalu menampilkan bahwa file disalin.

Apakah ada metode lain dalam cmd standar?

Ini harus menjadi metode yang tidak memerlukan perintah sentuh dari Cygwin atau perintah tidak standar lainnya. Perintah perlu dijalankan dari skrip sehingga penekanan tombol tidak dapat digunakan.

Grendler
sumber
Baru saja menemukan perintah batch yang benar yang menghasilkan file kosong (0 byte): Saya telah memperbarui jawaban saya.
VonC
3
Duplikat: stackoverflow.com/questions/210201 , "Bagaimana cara membuat file teks kosong dari file batch?". (Tapi, IMHO, jawabannya lebih baik di sini.)
Peter Mortensen
Ya, perintah copy nul> file.txt dibuat dengan teks "1 file disalin." File kosong tidak dibuat.
Ripon Al Wasim
5
Ini bagi saya hanya membuktikan bahwa MS-DOS adalah sampah jika Anda tidak dapat membuat file kosong biasa dengan satu perintah.
Ngarai Kolob
2
@KolobCanyon: Anda tentu saja bisa, per jawaban yang sudah diposting. Tetapi apakah Anda benar-benar berpikir kemampuan untuk membuat file kosong dengan cepat harus menjadi prioritas untuk sistem operasi yang ditujukan untuk pengguna akhir dan perlu dijalankan dalam RAM 16K? Lagipula, ini bukan hal yang berguna, kecuali dalam beberapa kasus tepi yang langka.
Harry Johnston

Jawaban:

571

Tanpa redirection, Luc Vu atau Erik Konstantopoulos menunjuk keluar ke:

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

" Bagaimana cara membuat file teks kosong dari file batch? " (2008) juga menunjuk ke:

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

Nomad menyebutkan yang asli :

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

Dengan semangat yang sama, Samuel menyarankan dalam komentar :

yang terpendek yang saya gunakan pada dasarnya adalah yang oleh Nomad:

.>out.txt

Itu memang memberikan kesalahan:

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

Tapi kesalahan ini ada di stderr. Dan >hanya pengalihan stdout, di mana tidak ada yang diproduksi.
Oleh karena itu pembuatan file kosong . Pesan kesalahan dapat diabaikan di sini.


(Jawaban asli, November 2009)

echo.>filename

( echo ""sebenarnya akan memasukkan "" ke dalam file! Danecho tanpa '.' akan memasukkan " Command ECHO activated" ke file ...)

Catatan: file yang dihasilkan tidak kosong tetapi termasuk urutan baris kembali: 2 byte.


Diskusi ini menunjuk ke solusi batch yang benar untuk file kosong nyata :

 <nul (set/p z=) >filename

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

The " <nul" mem-pipe nulrespons ke set/pperintah, yang akan menyebabkan variabel yang digunakan tetap tidak berubah. Seperti biasa dengan set/p, string di sebelah kanan tanda sama ditampilkan sebagai prompt tanpa CRLF.

Karena di sini "string di sebelah kanan tanda sama dengan" kosong ... hasilnya adalah file kosong.


Perbedaannya dengan cd. > filename(yang disebutkan dalam jawaban Patrick Cuff dan juga menghasilkan file dengan panjang 0 byte) adalah "bit redirection" ( <nul...trik) ini dapat digunakan untuk menggemakan baris tanpa CR :

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

The dirperintah harus menunjukkan ukuran file sebagai 11 byte: " helloworld!".

VONC
sumber
2
Anda sebenarnya menginginkannya echo.>filenamekarena itu akan memasukkan spasi serta karakter baris baru.
Agent_9191
1
Menggunakan remperintah untuk menghindari membuat file dengan baris kosong di dalamnya.
Greg Hewgill
@ Agent_9191: benar, saya telah memperbarui jawaban saya. @ Greg: tidak yakin apa yang Anda maksud: rem>filenamemenghasilkan hasil yang sama (2 byte)
VonC
3
Noufal Ibrahim: jangan biarkan ini membodohi Anda; lihat saja jawaban berikutnya yang memiliki solusi yang jauh lebih mudah dan berfungsi dengan baik. Apa yang dilakukan di sini sebagian salah dalam kasus pertama (tidak kosong tetapi berisi jeda baris) dan terlalu rumit dalam kasus kedua.
Joey
1
@barlop Ya: itu intinya: memicu beberapa pesan kesalahan pada stderr, tetapi tidak ada (string kosong) di stdout. Dan >mengarahkan stdout hanya ke out.txt. Oleh karena itu pembuatan file kosong. Anda dapat mengabaikan pesan kesalahan dalam konteks ini.
VonC
270

Coba ini:

type NUL > 1.txt

ini pasti akan membuat file kosong.

Justin
sumber
Ini menambahkan "NUL adalah ./NUL" ke file
dshgna
106

Inilah cara lain:

cd. > filename
Patrick Cuff
sumber
11
cd. > filenametidak bekerja untukku, bukannya cd > filename bekerja!
NaveenDA
3
"cd.> filename" membuat file kosong yang lain Anda akan memiliki filepath yang dicetak dalam file Anda yang baru dibuat menggunakan perintah "cd> filename".
niketan
6
Gunakan ini: cd . > filename.extensionBerarti Anda membutuhkan ruang antara cddan.
AI
77

Jika Anda benar-benar menginginkan file yang benar-benar kosong, tanpa keluaran apa pun untuk stdout, Anda dapat sedikit curang:

copy nul file.txt > nul

Arahkan ulang stdout ke nul, dan output dari salinan menghilang.

qid
sumber
1
Gagal jika file.txt ada.
Grendler
6
Gagal jika file itu ada adalah perilaku yang baik karena saya mengerti pertanyaannya.
wallyk
32
+1. Sungguh menakjubkan bagaimana jawaban yang diterima adalah sesuatu yang setengah salah dan setengah berbelit-belit sedangkan jawaban yang benar hampir tidak mendapat pujian. Untuk menambah ini: type nul>fileakan menjadi cara lain.
Joey
@ Joey yang diterima memiliki banyak solusi yang berfungsi untuk membuat file 0 byte kosong.
barlop
2
@barlop: Untuk referensi, ini adalah jawaban yang diterima pada saat komentar telah ditulis. Saya tidak mendapatkan pemberitahuan setiap kali jawaban berubah saya rujuk dalam komentar.
Joey
48

Membuka file :

type file.txt

File baru :

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

Edit konten:

notepad file.txt

Salinan

copy file1.txt file1Copy.txt

Ganti nama

rename file1.txt file1_rename.txt

Menghapus berkas :

del file.txt
iCrazybest
sumber
Ikhtisar bagus dari perintah cmd
KargWare
32

Membaca komentar di posting saya, saya harus mengakui bahwa saya tidak membaca pertanyaan dengan benar.

Pada baris perintah Windows, salah satu caranya adalah menggunakan fsutil :

fsutil file createnew <filename> <size>

Sebuah contoh:

fsutil file createnew myEmptyFile.txt 0

Di bawah ini untuk * nix command-line.

touch filename

Perintah ini mengubah tanggal modifikasi file atau membuatnya jika file tidak ditemukan.

nash
sumber
Sayangnya, pertanyaan itu secara spesifik menyatakan, "Tanpa perintah sentuhan dari Cygwin."
qid
3
Ada implementasi non-Cygwin dari perintah sentuh: unxutils.sourceforge.net bagus.
Greg Hewgill
Di * nix, saya pribadi sebagian ke yang sederhana > filename, yang juga dapat digunakan untuk memotong file yang sudah ada.
Frank Farmer
fsutilmembutuhkan hak administratif. Itu agak banyak untuk diminta hanya membuat file kosong ...
Joey
@ Joey Bukankah semua perintah ini terlalu banyak untuk membuat file kosong? Bahkan yang di bawah ini dengan 120 poin banyak ketika Anda terbiasa menyentuh.
johnny
29
echo "" > filename

Saya percaya ini bekerja pada Windows / DOS, tetapi pengalaman terakhir saya dengan keduanya cukup lama. Saya tahu benar bahwa ini bekerja pada dasarnya pada OS POSIX .

Keris
sumber
2
Terlihat jelas, jawaban VonC lebih baik daripada jawaban saya, jadi tolong pilih itu.
Kris
3
Sayangnya: "" gema menampilkan tanda kutip ganda dan mereka dituliskan ke file ketika aliran dialihkan ke sana. Hal yang sama terjadi dengan just: echo> filename karena ia menulis ECHO juga mati / hidup.
Grendler
mungkin Anda bisa mematikan "@echo" sebelum membuat file untuk menghindarinya?
Kris
27
call>file.txt

ini adalah cara terbersih yang saya tahu.

nephi12
sumber
Ada apa dengan ini yang "bersih"?
GreenAsJade
4
itu tidak menghasilkan apa-apa ke file sambil mudah diingat dan digunakan.
nephi12
Ini adalah solusi paling sederhana yang berfungsi, dan paling mudah diingat.
nhershy
12
cd > filename.cfg 

bekerja ketika membuat file di C: / Program Files di mana Anda tidak memiliki akses untuk membuat file secara langsung.

Subhashi
sumber
11

Anda dapat menulis sentuhan Anda sendiri.

//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;
}
Paul Nathan
sumber
6

salin con SomeFile.txt Enter

Ctrl-Z Enter

DRapp
sumber
Saya mendahului pertanyaan bahwa perintah akan dijalankan dari skrip sehingga sayangnya interaksi keyboard tidak berfungsi. Terima kasih.
Grendler
6

Namun metode lain yang membuat file byte nol:

break > "file.txt"
foxidrive
sumber
6

sehingga Anda dapat membuat file kosong dengan

'' > newfile.txt

arahkan ke direktori dan ketik perintah di atas di jendela PowerShell.

Catatan ini tidak akan berfungsi pada command prompt windows.

Aswin 1054
sumber
5

Coba ini: abc > myFile.txt Pertama, itu akan membuat file dengan nama myFile.txtdi direktori kerja saat ini (di command prompt). Maka itu akan menjalankan perintah abcyang bukan perintah yang valid. Dengan cara ini, Anda mendapatkan file kosong baru dengan namanya myFile.txt.

Pengembara
sumber
2
Ini bisa sangat salah jika abcberada di jalur dan merupakan fungsi praktis untuk memformat semua drive kecuali direktori instalasi.
Bleeding Fingers
5

type nul>filename akan membuat file kosong baru.

Maaf saya terlambat.

UPDATE : Juga copy nul filenameberfungsi tanpa mengarahkan (solusi yang lebih jelas).

EKons
sumber
5

Gunakan copy > your_file_name.extensiondi command prompt seperti

P:\excecise> copy > Sample.txt
Raj Kumar Mishra
sumber
4

Anda juga bisa menggunakan:

echo. 2>foo

Output debug untuk echo.hampir pasti akan kosong.

Craig
sumber
4

Saya membaca banyak utas tetapi itu bukan cara terpendek.

Silakan gunakan perintah:

>copy /b NUL empty_file.txt

suhao399
sumber
4

Anda bisa menggunakan perintah lama

copy con file_name.ext

jangan mengetik apa pun, cukup tekan F6 untuk menyimpannya, namun itu akan mencetak "File yang disalin", tetapi ketika Anda membuka file, itu akan kosong

Amado Saladino
sumber
4

Untuk membuat jenis file apa pun, Anda dapat menggunakan kode berikut

ketik nul> (file_name). (file_type)

Misalnya. Jika Anda ingin membuat file teks maka

ketik nul> demo.txt

Jika Anda ingin membuat file javascript maka

ketik nul> demo.js

Darshan Jain
sumber
3

Ini berhasil untuk saya,

echo > file.extension

Inilah cara lain yang saya temukan hari ini, mendapat ide dari jawaban lain tetapi berhasil

sometext > filename.extension

Misalnya.

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

Ini akan menampilkan pesan kesalahan pada prompt perintah bahwa,

xyz bukan sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch.

Tetapi yang aneh yang saya temukan adalah file sedang dibuat di direktori walaupun perintahnya bukan perintah windows standar.

Beruntung
sumber
1
Ada lebih dari satu "pegangan" yang dapat dibaca / ditulis aplikasi konsol. Yang standar adalah: (0) STDIN, (1) STDOUT, dan (2) STDERR. Saya percaya alasan trik Anda berfungsi di sini adalah karena semua output mengarah ke penanganan kesalahan tetapi Anda hanya mengarahkan STDOUT ke file tersebut. Coba lakukan: "xyz> emptyfile.txt 2> & 1" untuk mengarahkan ulang STDERR ke STDOUT apa pun yang digunakan, yang kebetulan mengarahkan ke "emptyfile.txt". Anda akan melihat pesan kesalahan di dalam file itu sekarang.
Brent Rittenhouse
3

Coba ini:

echo $null >> filename 

Lihat: superUser

shireef khatab
sumber
3

Pada Windows saya mencoba melakukan ini

echo off > fff1.txt

dan itu menciptakan file bernama fff1.txt dengan ukuran file 0kb

Saya tidak menemukan perintah apa pun selain ini yang dapat membuat file kosong.

Catatan: Anda harus berada di direktori yang Anda inginkan untuk membuat file.

Omkar Agrawal
sumber
jangan lupa untuk mengulang setelah membuat file jika Anda perlu.
QMaster
Perintah ini membekukan cmd setelah mengklik ENTER.
Kavin Raju S
Saya tidak yakin mengapa hal itu terjadi, tetapi saya kira Anda harus melakukan "echo on" setelah memasukkan perintah di atas.
Omkar Agrawal
3

Namun cara lain:

copy nul 2>empty_file.txt
GadBro
sumber
2

Saya baru saja mencoba di windows

copy con file.txt

lalu Tekan EnterTombol lalu TekanCtrl+Z Enter

Dan itu berhasil untuk saya.

Untuk Ubuntu biasanya saya membuat file menggunakan perintah VI

vi file.txt

Ini akan membuka file kemudian tekan ESCtombol lalu ketik : wp lalu tekan entertombol. Ini akan membuat file baru dengan data kosong.

ARJUN KP
sumber
2
  • buat file kelelawar dengan konten echo '' > %1. (beri nama file tersebut sebagai touch.bat)
  • tambahkan folder ke variabel PATH.
  • Anda dapat menggunakan sentuhan untuk membuat file. (Mis: touch temp.txtmembuat file temp.txt)

periksa artikel ini untuk informasi lebih lanjut.

Pranay Kumar
sumber
1

Hari ini saya telah menemukan yang baru :)

Ini akan mengubah judul jendela baris perintah, tetapi juga akan membuat file kosong.

title > file.txt
ninix
sumber
1

Jalankan CMD dalam mode administrator dan ketik ini:

NUL > file_name.extention

atau Anda mengetik ini

echo .> file_name.extention
Lekens
sumber
1

Inilah cara lain:

rem/ > file.ext

Tebasan /itu wajib; tanpa itu bagian redirection dikomentari oleh rem.

aschipfl
sumber
0

Pertama buat file Anda sehingga ada:

echo . > myfile.txt

Kemudian timpa file yang dibuat dengan versi kosong menggunakan copyperintah:

copy /y nul myfile.txt
Dowopfan
sumber