Windows'ta komut satırında boş bir dosya nasıl oluşturulur?


494

DOS / Windows komut satırında boş bir dosya nasıl oluşturulur?

Denedim:

copy nul > file.txt

ancak her zaman bir dosyanın kopyalandığını gösterir.

Standart cmd'de başka bir yöntem var mı?

Cygwin veya diğer standart olmayan komutlardan dokunma komutunu gerektirmeyen bir yöntem olmalıdır . Tuş vuruşlarının kullanılamaması için komutun bir komut dosyasından çalıştırılması gerekir.


Boş bir dosyayla sonuçlanan gerçek bir toplu iş komutu buldum (0 bayt): Cevabımı güncelledim.
VonC

3
Kopya: stackoverflow.com/questions/210201 , "Bir toplu iş dosyasından boş metin dosyası nasıl oluşturulur?". (Ama IMHO, cevaplar burada daha iyi.)
Peter Mortensen

Evet, kopya nul> file.txt komutu "1 dosya kopyalandı" metniyle oluşturulur. Boş dosya oluşturulmadı.
Ripon Al Wasim

5
Bu bana sadece bir komut ile düz bir boş dosya oluşturamazsanız MS-DOS çöp olduğunu kanıtlıyor.
Kolob Kanyonu

2
@KolobCanyon: Tabii ki, zaten gönderilen cevaplara göre. Ancak hızlı bir şekilde boş bir dosya oluşturma yeteneğinin, son kullanıcılara yönelik ve 16K RAM'de çalışması gereken bir işletim sistemi için bir öncelik olması gerektiğini düşünüyor musunuz? Sonuçta, birkaç nadir durum dışında, yapılması özellikle yararlı bir şey değildir.
Harry Johnston

Yanıtlar:


571

Olmadan yönlendirme, Luc Vu veya Erik Konstantopoulos işaret dışarı için:

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

" Bir toplu iş dosyasından boş metin dosyası nasıl oluşturulur? " (2008) ayrıca şunu da gösterir:

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

Göçebe orijinalinden bahseder :

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

Aynı ruhla, Samuel anlaşılacağı yorumlarda :

en kısa kullandığım temelde Nomad'ınki:

.>out.txt

Bir hata veriyor:

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

Ancak bu hata stderr'de. Ve >sadece hiçbir şeyin üretilmediği stdout'u yönlendirir .
Böylece boş bir dosya oluşturulur. Hata mesajı burada dikkate alınmayabilir.


(Orijinal cevap, Kasım 2009)

echo.>filename

( echo ""aslında dosyaya "" koyar! Ve echo'.' olmadan dosyaya " Command ECHO activated" koyar ...)

Not: sonuçta elde edilen dosya boş değildir ancak bir dönüş satırı dizisi içerir: 2 bayt.


Bu tartışma , gerçek bir boş dosya için gerçek bir toplu iş çözümüne işaret eder :

 <nul (set/p z=) >filename

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

" <nul" Komutu, kullanılan değişkenin değişmeden kalmasına neden olacak bir komuta nulyanıt verir set/p. Her zamanki gibi set/p, eşittir işaretinin sağındaki dize, CRLF içermeyen bir bilgi istemi olarak görüntülenir.

Burada "eşittir işaretinin sağındaki dize" boş olduğu için ... sonuç boş bir dosyadır.


Aradaki fark cd. > filename( Patrick Cuff'ın cevabında belirtilir ve 0 bayt uzunluktaki bir dosya üretir), bu "yeniden yönlendirme biti" ( <nul...hile) herhangi bir CR'siz hatları yankılamak için kullanılabilir :

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

dir11 bayt olarak komut dosyası boyutunu belirtmelidir: " helloworld!".


2
aslında istersiniz echo.>filenameçünkü boşluk ve satırsonu karakterini içerecektir.
Agent_9191

1
remKomutu kullanmak, içinde boş bir çizgi bulunan bir dosya oluşturmaktan kaçınır.
Greg Hewgill

@ Agent_9191: doğru, cevabımı güncelledim. @Greg: ne demek istediğinden emin değilim: rem>filenameaynı sonucu verir (2 bayt)
VonC

3
Noufal İbrahim: Bunun seni kandırmasına izin verme; çok daha kolay ve eşit olarak çalışan bir çözüme sahip olan bir sonraki cevaba bakın. Burada yapılanlar ilk durumda kısmen yanlıştır (boş değil, satır sonu içerir) ve ikincisinde aşırı karmaşıktır.
Joey

1
@barlop Evet: önemli olan nokta: stderr'de bazı hata iletilerini tetikler, ancak stdout'ta hiçbir şey (boş dize) tetikler . Ve >stdout'u yalnızca adresine yönlendirin out.txt. Böylece boş bir dosya oluşturulur. Bu bağlamda hata mesajını göz ardı edebilirsiniz.
VonC

270

Bunu dene:

type NUL > 1.txt

bu kesinlikle boş bir dosya oluşturur.


Bu, dosyaya "NUL ./NUL" ekler
dshgna

106

İşte başka bir yol:

cd. > filename

11
cd. > filenameişler yerine benim için işe yaramıyor cd > filename !
NaveenDA

3
"cd.> dosyaadı" boş dosya oluşturur, aksi takdirde "cd> dosyaadı" komutunu kullanarak yeni oluşturduğunuz dosyaya dosya yolu yazdırılır.
niketan

6
Bunu kullanın: cd . > filename.extensionanlamına gelir cdve arasında bir boşluk gerekir.
AIon

77

Tamamen boş bir dosya istiyorsanız, stdout için herhangi bir çıktı olmadan, biraz hile yapabilirsiniz:

copy nul file.txt > nul

Stdout'u nul'e yönlendirin ve kopyadan çıktılar kaybolur.


1
File.txt dosyası varsa başarısız olur.
Grendler

6
Soruyu anladığım için dosya varsa başarısız olmak iyi bir davranış.
wallyk

32
+1. Kabul edilen cevabın yarı yanlış ve yarı kıvrımlı bir şey olması şaşırtıcıdır, ancak açıkça doğru olanın neredeyse hiç kredisi yoktur. Buna eklemek için: type nul>filebaşka bir yol olurdu.
Joey

@ Kabul edilenin boş bir 0 bayt dosyası oluşturmak için çalışan bir sürü çözümü var.
barlop

2
@barlop: Referans olarak, bu , yorum yazıldığı sırada kabul edilen cevaptı. Bir yorumda başvurduğum her yanıt değiştiğinde bildirim almıyorum.
Joey

48

Açık dosya :

type file.txt

Yeni dosya :

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

İçeriği düzenle:

notepad file.txt

kopya

copy file1.txt file1Copy.txt

Adını değiştirmek

rename file1.txt file1_rename.txt

Dosyayı sil :

del file.txt

Cmd komutlarına güzel genel bakış
KargWare

32

Gönderi hakkındaki yorumları okurken, soruyu doğru okumadığımı itiraf etmeliyim.

Windows komut satırında, bir yol fsutil kullanmak olacaktır :

fsutil file createnew <filename> <size>

Bir örnek:

fsutil file createnew myEmptyFile.txt 0

Aşağıda * nix komut satırı içindir.

touch filename

Bu komut, bir dosyanın değiştirilme tarihinizi değiştirir veya dosya bulunmazsa oluşturur.


Ne yazık ki, soru özellikle "Cygwin'in dokunmatik komutu olmadan" yazıyor.
qid

3
Touch komutunun Cygwin dışı uygulamaları var: unxutils.sourceforge.net iyi.
Greg Hewgill

* Nix'te, ben şahsen basit bir kısmi var > filename, ki bu da varolan bir dosyayı kısaltmak için kullanılabilir.
Frank Farmer

fsutilidari ayrıcalıklara ihtiyaç duyar. Sadece boş bir dosya oluşturmak için sormak biraz fazla ...
Joey

@Joey Tüm bu komutlar boş bir dosya oluşturmak için biraz fazla değil mi? Dokunma alıştığınız zaman aşağıdaki 120 puan bile çok fazla.
johnny

29
echo "" > filename

Bunun Windows / DOS üzerinde çalıştığına inanıyorum, ancak her ikisiyle de son uygulamalı deneyimim bir süre önce. Temelde herhangi bir POSIX uyumlu işletim sistemi üzerinde çalıştığını biliyorum .


2
Görünüşe göre, VonC'nin cevabı benimkinden daha iyi, lütfen bunun yerine lütfen oy verin.
Kris

3
Maalesef: echo "" çift tırnak işareti görüntüler ve akış ona yönlendirildiğinde dosyaya yazılır. Aynı şey ECHO'nun dosyaya da kapalı / açık olduğunu yazdığı için sadece echo> dosyaadı ile olur.
Grendler

belki bunu atlatmak için dosyayı oluşturmadan önce "@echo" satırını koyabilirsiniz?
Kris

27
call>file.txt

bu bildiğim en temiz yol.


Bu konuda "temiz" olan nedir?
GreenAsJade

4
hatırlanması ve kullanılması kolayken dosyaya hiçbir şey çıkarmaz.
nephi12

Bu, çalışan en kolay çözüm ve hatırlanması en kolay çözümdü.
nhershy

12
cd > filename.cfg 

doğrudan dosya oluşturma erişiminizin olmadığı C: / Program Files'da dosya oluştururken çalıştı.


11

Kendi dokunuşunuzu yazabilirsiniz.

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

kopyala SomeFile.txt Enter

Ctrl-Z Enter


Komutun komut dosyasından çalışacağı sorusunu kesinleştirdim, bu yüzden maalesef herhangi bir klavye etkileşimi çalışmıyor. Yine de teşekkürler.
Grendler

6

Sıfır bayt dosyası oluşturan başka bir yöntem:

break > "file.txt"

6

böylece boş bir dosya oluşturabilirsiniz

'' > newfile.txt

dizine gidin ve PowerShell penceresine yukarıdaki komutu yazın.

Bunun windows komut isteminde çalışmayacağını unutmayın.


5

Bunu deneyin: abc > myFile.txt İlk olarak, myFile.txtmevcut çalışma dizininde (komut isteminde) adla bir dosya oluşturur . Sonra abcgeçerli bir komut olmayan komutu çalıştıracaktır . Bu şekilde, adıyla yeni bir boş dosya aldınız myFile.txt.


2
abcYoldaysa ve kurulum dizini dışındaki tüm sürücüleri biçimlendirmek için bir kolaylık işleviyse bu çok yanlış olabilir .
Kanama Parmakları

5

type nul>filename yeni bir boş dosya oluşturur.

Üzgünüm geciktim.

GÜNCELLEME : Ayrıca copy nul filenameyönlendirmeden de çalışır (daha belirgin bir çözüm).


5

copy > your_file_name.extensionGibi komut isteminde kullanın

P:\excecise> copy > Sample.txt

4

Ayrıca şunları kullanabilirsiniz:

echo. 2>foo

İçin hata ayıklama çıktısı echo.neredeyse kesinlikle boş olacaktır.


4

Birçok konu okudum ama en kısa yol değil.

Lütfen şu komutu kullanın:

>copy /b NUL empty_file.txt


4

Eski komutu kullanabilirsiniz

copy con file_name.ext

hiçbir şey yazmayın, kaydetmek için sadece F6 tuşuna basın, ancak "Dosya kopyalandı" yazdıracaktır, ancak dosyayı açtığınızda boş olacaktır


4

Herhangi bir dosya türü oluşturmak için aşağıdaki kodu kullanabilirsiniz

nul> (dosya_adı) yazın. (dosya_türü)

Örneğin. Bir metin dosyası oluşturmak istiyorsanız

nul> demo.txt yazın

Bir javascript dosyası oluşturmak istiyorsanız

nul> demo.js yazın


3

Bu benim için çalıştı,

echo > file.extension

İşte bugün bulduğum başka bir yol, diğer cevaplardan fikirler aldım ama işe yaradı

sometext > filename.extension

Örneğin.

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

Bu, komut isteminde aşağıdaki hata iletisini gösterir:

xyz dahili veya harici komut, çalıştırılabilir program veya toplu iş dosyası değil.

Ama bulduğum garip şey, komut standart bir windows komutu olmasa bile, dizinde oluşturulmaktı.


1
Konsol uygulamalarının okuyabileceği / yazabileceği birden fazla "tanıtıcı" vardır. Standart olanlar: (0) STDIN, (1) STDOUT ve (2) STDERR. Ben hile burada neden nedeni tüm çıktı hata tanıtıcı gidiyor çünkü sadece dosya STDOUT yönlendiriyorsunuz inanıyorum. "Xyz> emptyfile.txt 2> & 1" komutunu kullanarak STDERR'u STDOUT'un kullandığı her şeye yeniden yönlendirin, bu da "emptyfile.txt" dosyasına yönlendirme yapıyor.
Brent Rittenhouse


3

Windows'ta bunu denedim

echo off > fff1.txt

ve 0kb dosya boyutunda fff1.txt adlı bir dosya oluşturdu

Bunun dışında boş bir dosya oluşturabilecek herhangi bir komut bulamadım.

Not: Dosyayı oluşturmak istediğiniz dizinde olmanız gerekir.


gerekiyorsa dosya oluşturduktan sonra yankılanmayı unutmayın.
QMaster

Bu komut ENTER'a tıkladıktan sonra cmd'yi dondurur.
Kavin Raju S

Neden böyle olduğundan emin değilim, ama yukarıdaki komutu girdikten sonra "echo on" yapmanız gerektiğini düşünüyorum.
Omkar Agrawal


2

Sadece pencerelerde denedim

copy con file.txt

sonra tuşuna basın Entersonra tuşuna basınCtrl+Z Enter

Ve bu benim için çalıştı.

Ubuntu için genellikle VI komutunu kullanarak bir dosya oluşturuyorum

vi file.txt

Dosyayı açıp tuşuna basın, ESCsonra : wp yazın ve tuşuna basın enter. Boş verilerle yeni bir dosya oluşturur.


2
  • içerikli bir bat dosyası yarat echo '' > %1 . (dosyayı touch.bat olarak adlandırın)
  • klasörü PATH değişkenine ekleyin.
  • dosya oluşturmak için dokunmayı kullanabilirsiniz. (Örn: touch temp.txttemp.txt dosyası oluşturur)

kontrol bu fazla bilgi için makaleyi.


1

Bugün yeni bir tane keşfettim :)

Bu komut satırı penceresi başlığını değiştirir, ancak boş bir dosya oluşturur.

title > file.txt

1

CMD'yi yönetici modunda çalıştırın ve şunu yazın:

NUL > file_name.extention

ya da sen bunu yaz

echo .> file_name.extention

1

İşte başka bir yol:

rem/ > file.ext

Eğik çizgi /zorunludur; onsuz yönlendirme kısmı tarafından yorumlandı rem.


0

Öncelikle dosyanızı var olacak şekilde oluşturun:

echo . > myfile.txt

Ardından, şu copykomutu kullanarak oluşturulan dosyanın üzerine boş bir sürümün üzerine yazın:

copy /y nul myfile.txt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.