Bagaimana cara membuat file teks kosong dari file batch?

244

Adakah yang bisa mengingat apa perintah untuk membuat file kosong di MSDOS menggunakan file BAT?

m_pGladiator
sumber
3
Juga di stackoverflow.com/questions/1702762 , "Bagaimana cara membuat file kosong di baris perintah?".
Peter Mortensen
6
Anda tidak membingungkan DOS dan cmd.exe, bukan?
pengguna tidak diketahui
BACA SAYA: Set-Content "your_file.txt" .gitignore -Encoding utf8ini case-sensitive dan memaksa pengkodean utf8! (Saya juga memposting ini sebagai jawaban).
Wolfpack'08

Jawaban:

235
echo. 2>EmptyFile.txt
TheSmurf
sumber
49
Ini menggemakan baris baru ke stdout, meskipun ... jawaban saya tidak.
ephemient
7
Terkadang itu relevan; Saya dulu punya sentuhan berbaring sampai saya mendapatkan ide hanya menyalin NUL (atau ketik NUL> file) untuk tujuan mendapatkan file 0-byte. :-)
Joey
18
Untuk menggabungkan jawaban ephemient dan yang ini, Anda dapat melakukan: "echo.> NUL 2> EmptyFile.txt" untuk mencapai hasil yang sama tanpa mengeluarkan baris baru
cmptrgeekken
7
Why .in inecho.
Ninh Pham
3
@ Mulai Jika Anda menggunakan echo 2tanpa ., konsol akan membaca "ECHO mati." Menggunakan echo. 2secara efektif membisukan output konsol dengan hanya menampilkan baris baru.
OneManBand
362
salin NUL EmptyFile.txt

DOS memiliki beberapa file khusus (perangkat, sebenarnya) yang ada di setiap direktori, NULsetara dengan UNIX /dev/null: ini adalah file ajaib yang selalu kosong dan membuang apa pun yang Anda tulis ke dalamnya. Berikut daftar beberapa yang lain; CONterkadang juga bermanfaat.

Untuk menghindari output apa pun, Anda dapat menggunakan

salin / y NUL EmptyFile.txt> NUL

/ymencegah copymengajukan pertanyaan yang tidak dapat Anda lihat saat output masuk ke NUL.

singkat
sumber
36
+1 - pertanyaannya menyatakan file kosong , jadi jawaban yang diterima salah.
Joe
9
Solusi DannySmurf sebenarnya membuat file kosong - baris baru menuju stdout, tidak ada yang berjalan ke stderr (diarahkan ke file baru). Tapi terima kasih untuk +1 anyways
ephemient
2
ketik nul> EmptyFile.txt adalah solusi terpendek. Tetap saja jawaban Anda lebih baik daripada solusi yang diterima, karena file Anda akan benar-benar kosong. +1
TPAKTOPA
3
Peringatan: ya pertanyaannya adalah tentang cara membuat file kosong, namun biasanya Anda ingin "memastikan file itu ada". Saat menggunakan copy /Y NULperintah itu mungkin menghapus konten yang ada. Jika Anda terbiasa dengan touchperintah Unix , ini mungkin sama sekali tidak seperti yang Anda harapkan.) Menggunakan type NUL >> emptyfile.txtlebih aman dalam hal ini.
eckes
Saya tidak dapat menemukan informasi apa pun CON, selain yang ditautkan dalam jawaban ini. Bisakah seseorang membagikan bacaan ringan?
Sinjai
182
type NUL > EmptyFile.txt

Setelah membaca dua posting sebelumnya, perpaduan keduanya adalah apa yang saya buat. Tampaknya sedikit lebih bersih. Tidak perlu khawatir tentang mengarahkan "1 file yang disalin." pesan ke NUL, seperti posting sebelumnya, dan itu terlihat bagus di sebelah ECHO OutputLineFromLoop >> Emptyfile.txtyang biasanya akan mengikuti file batch.

Kevin K.
sumber
13
+1 ini yang alami yang pertama kali terlintas dalam pikiran, bukan penemuan dengan stderr dll.
Amit Naidu
2
Anda benar. Metode ini menghindari flag / y pada perintah copy.
Djangofan
Singkat dan mudah. Beberapa solusi lain di sini tidak membuat file baru dengan nol byte!
Christian St.
66

Teknik yang saya kumpulkan dari jawaban lain:

Membuat file 0 byte sangat jelas, kompatibel dengan cara terbelakang:

type nul >EmptyFile.txt

ide via: anonim , Danny Backett , mungkin orang lain, saya sendiri terinspirasi oleh karya JdeBP

File 0 byte dengan cara lain , tampak kompatibel-mundur:

REM. >EmptyFile.txt

ide melalui: Johannes

File 0 byte ke -3 juga kompatibel dengan backward:

echo. 2>EmptyFile.txt

ide melalui: TheSmurf

File 0 byte cara sistematis mungkin tersedia sejak Windows 2000:

fsutil file createnew EmptyFile.txt 0

ide melalui: Emm

File 0 byte menimpa file hanya baca

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

ide via: hak cipta

Baris baru tunggal (2 byte: 0x0D 0x0Adalam notasi hex , atau ditulis sebagai \r\n):

echo.>AlmostEmptyFile.txt

Catatan: tidak ada spasi di antara echo, .dan >.

ide via: Bagaimana Anda bisa menggema baris baru dalam file batch?


sunting Tampaknya setiap perintah tidak sah yang dialihkan ke file akan membuat file kosong. heh, sebuah fitur! kompatibilitas: uknown

TheInvisibleFeature <nul >EmptyFile.txt

File 0 byte: perintah tidak valid / dengan nama acak (kompatibilitas: uknown):

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

via: sumber yang bagus untuk acak oleh Hung Huynh

sunting 2 Andriy M menunjukkan cara yang paling lucu / memprovokasi untuk mencapai ini melalui perintah yang tidak valid

File 0 byte: perintah tidak valid / cara funky (kompatibilitas: tidak diketahui)

*>EmptyFile.txt

ide via: Andriy M

File 0 byte cara yang akan datang :

break > file.txt

ide via: foxidrive berkat komentar dari Double Gras !

n611x007
sumber
Sebenarnya type nul ...bukan type <nul ....
Andriy M
@AndriyM terima kasih Anda benar, saya telah mengedit! Tidak memperhatikan karena cukup menarik itu bekerja dengan yang salah. yang dapat berarti bahwa setiap perintah yang tidak valid diarahkan ke nama file akan membuat file kosong! baru saja mencoba NonExistentCommand <nul >EmptyFile.txtdan berhasil
n611x007
karena akan tidak aman untuk bergantung pada nama perintah yang di-hardcoded yang mengharapkannya "tidak valid", saya menambahkan opsi nama perintah secara acak
n611x007
2
Satu lagi :,break > file.txt alat peraga foxidrive
Gras Double
3
Dan sebagian besar perintah dapat digunakan dengan >>jika Anda perlu "harus ada tetapi tidak boleh terpotong jika ada" (seperti Unix touch)
eckes
25

REM. > empty.file

Johannes
sumber
Saya terjebak pada Windows CE, dan ini adalah satu-satunya jawaban yang membuat dan mengosongkan file! Pendekatan lain baik menambahkan baris kosong atau tidak berfungsi ...
AntonyG
Satu-satunya masalah dengan solusi ini adalah bahwa jika ada file yang disebut REM di direktori saat ini, dan Anda mengetik REM., cmd akan merespons dengan "'rem.' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch. "
DodgyCodeException
@DodgyCodeException, menggunakan rem/alih-alih rem.menyelesaikan masalah itu ...
aschipfl
@aschipfl terima kasih, itu menarik. Sangat menarik juga bagaimana jawaban dari tahun 2010 ini memberi jarak komentar satu sama lain selama beberapa tahun. Percakapan yang pelan-pelanwwww!
DodgyCodeException
8

Jika ada kemungkinan file yang akan ditulis sudah ada dan hanya baca, gunakan kode berikut:

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

Jika tidak ada file, cukup lakukan:

CD .>filename.ext

(kode diperbarui / diubah sesuai dengan komentar DodgyCodeException)

Untuk menekan kesalahan yang mungkin timbul:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL
script'n'code
sumber
1
Satu-satunya masalah dengan solusi ini adalah jika ada file bernama CD(tidak ada ekstensi) di direktori saat ini, dan Anda mengetik CD., cmd akan merespons dengan "'CD.' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch. " Jika Anda mengetik CD .(dengan spasi sebelum titik) itu akan berfungsi.
DodgyCodeException
7
fsutil file createnew file.cmd 0
Emm
sumber
Utilitas FSUTIL mengharuskan Anda memiliki hak administratif.
DodgyCodeException
fsutil bukan utilitas standar di MS-DOS.
Bernhard Eriksson
7

Satu lagi untuk ditambahkan ke buku - pendek dan manis untuk diketik.

break>file.txt
break>"file with spaces in name.txt"
foxidrive
sumber
Saya kira kita tidak akan melewatkan tanda kutip
Nam G VU
@NamGVU Kutipan digunakan dalam nama file target, jika Anda memilih untuk menggunakan elemen nama file panjang seperti spasi atau & dll. Mereka bukan bagian dari isi file.
foxidrive
Ya saya setuju ^^ Izin untuk memperbarui milik Anda seperti yang dibahas.
Nam G VU
@NamGVU Kutipan dapat dibiarkan dengan atau tanpa nama file yang panjang. Saya kira jika itu diketik dari baris perintah dengan nama file pendek, maka Anda tidak ingin mengetik yang tidak perlu.
foxidrive
Saya sarankan menghapus baris kedua dari jawaban ini. IMO ini adalah jawaban terbaik untuk pertanyaan sejauh ini, tetapi baris kedua tidak benar-benar menambah nilai kecuali orang yang mencoba menggunakannya tidak tahu dasar-dasar penanganan ruang putih untuk baris perintah.
kayleeFrye_onDeck
2

Anda bisa menggunakan TYPEperintah sebagai ganti COPY. Coba ini:

TYPE File1.txt>File2.txt

Dimana File1.txtkosong.

Kevin K.
sumber
3
Anda juga dapat melakukannyatype NUL>File2.txt
Danny Beckett
6
BTW, bagaimana cara mendapatkan File1.txt?
TomeeNS
1

Anda juga dapat menggunakan SETuntuk membuat bytefile null sebagai berikut

set x=x > EmptyFile.txt

Atau jika Anda tidak ingin membuat variabel tambahan, tetapkan ulang variabel yang sudah ada seperti

set PROMPT=%PROMPT% > EmptyFile.txt

atau seperti ini:

set "PROMPT=%PROMPT%" > EmptyFile.txt
PeterE
sumber
0

Ada pendekatan yang tak terbatas.

Perintah yang tidak menghasilkan apa-apa:

break
cls
color
goto
pushd
popd
prompt
title

Perintah Aneh:

CD.
REM.
@echo off
cmd /c
START >FILE

printPerintah yang kedaluwarsa menghasilkan file kosong:

print /d:EMPTY_TEXT_FILE nul
HackingAddict1337
sumber
-2

Cara termudah adalah:

echo. > Filename.txt

Batchman
sumber
8
Ini akan membuat file dengan karakter spasi diikuti oleh karakter carriage return diikuti oleh karakter baris baru - bukan file kosong.
Andriy M
Layak melihat jawaban saya (di bawah) karena itu mengubah pengkodean.
Wolfpack'08
-3

PENTING:

Jika Anda tidak mengatur penyandian, banyak perangkat lunak dapat rusak. git adalah contoh yang sangat populer.

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 ini case-sensitive dan memaksa utf8 encoding!

Wolfpack'08
sumber
3
Bagaimana pengkodean relevan untuk membuat file kosong ? File byte nol tidak memerlukan pengodean apa pun dan sulit untuk menandainya dengan BOM (0 byte)
jeb
@ jeb karena orang mengisi file kosong, dan ketika file yang diisi digunakan sebagai file pengaturan, mereka membuat kesalahan ketika mereka bukan UTF8. Bahkan, saya akan mengatakan orang hampir selalu mengisi file dan tidak membiarkannya kosong, dan saya tidak akan menggunakan metode lain untuk membuat file kosong yang kemudian saya maksudkan untuk diubah karena saya hampir selalu ingin memastikan bahwa file saya adalah UTF8. Sebagai contoh, tutorial .git tentang github meminta pengguna untuk membuat file kosong yang kemudian diisi, dan metode lain membuat file dengan pengodean Windows yang aneh.
Wolfpack'08