Bir toplu iş dosyasından boş metin dosyası nasıl oluşturulur?


244

Birisi BAT dosyasını kullanarak MSDOS'ta boş bir dosya oluşturma komutunun ne olduğunu hatırlayabilir mi?


3
Ayrıca stackoverflow.com/questions/1702762 , "Komut satırında boş bir dosya nasıl oluşturulur?"
Peter Mortensen

6
DOS'u karıştırmıyorsunuz ve değil cmd.exemi?
kullanıcı bilinmiyor

BENİ OKU: Set-Content "your_file.txt" .gitignore -Encoding utf8Bu büyük / küçük harfe duyarlıdır ve utf8 kodlamasını zorlar! (Ben de bunu cevap olarak gönderdim).
Wolfpack'08

Yanıtlar:


235
echo. 2>EmptyFile.txt

49
Bu, stdout'a yeni bir satır getiriyor, ancak ... cevabım öyle değil.
ephemient

7
Bazen önemlidir; 0 baytlık dosyaları almak için sadece NUL (veya NUL> dosyası) kopyalama fikrini bulana kadar etrafta dokunurdum. :-)
Joey

18
Ephemient'in cevabını ve bunun cevabını birleştirmek için şunları yapabilirsiniz: "echo.> NUL 2> EmptyFile.txt" yeni bir satır çıkmadan aynı sonuçları elde etmek için
cmptrgeekken

7
Neden .buradaecho.
Ninh Pham

3
@Reegan Eğer echo 2olmadan kullandıysanız ., konsol "ECHO kapalı" yazacaktır . Kullanılması echo. 2etkili bir şekilde sadece bir yeni satır görüntüleyerek konsol çıktısını susturur.
OneManBand

362
NUL EmptyFile.txt dosyasını kopyala

DOS'un her dizinde var olan, NULUNIX'lerin eşdeğeri olan birkaç özel dosyası vardır (aslında aygıtlar) /dev/null: her zaman boş olan ve yazdığınız her şeyi atan sihirli bir dosyadır. İşte bazılarının listesi ; CONzaman zaman da faydalıdır.

Herhangi bir çıktı almamak için aşağıdakileri kullanabilirsiniz:

copy / y NUL EmptyFile.txt> NUL

/ycopyçıktı gittiğinde göremediğiniz bir soru sormanızı engeller NUL.


36
+1 - soru boş bir dosya belirtiyor, bu nedenle kabul edilen cevap yanlış.
Joe

9
DannySmurf'ın çözümü aslında boş bir dosya oluşturuyor - bir yeni satır stdout'a gidiyor, hiçbir şey stderr'e gitmiyor (yeni dosyaya yönlendirildi). Ama yine de +1 için teşekkürler
ephemient

2
nul> EmptyFile.txt yazın en kısa çözümdür. Hala cevabınız kabul edilen çözümden daha iyidir, çünkü dosyanız gerçekten boş olacaktır. +1
TPAKTOPA

3
Uyarı: evet soru, boş bir dosyanın nasıl oluşturulacağıyla ilgiliydi, ancak genellikle "dosyanın var olduğundan emin olmak" istersiniz. copy /Y NULKomutu kullanırken mevcut içeriği silebilir. Unix ' touchkomutuna alışkınsanız, bu beklediğiniz gibi olmayabilir.) type NUL >> emptyfile.txtBu konuda kullanmak daha güvenlidir.
eckes

CONBu cevapta bağlantılı olanların dışında hiçbir bilgi bulamadım . Birisi hafif bir okumayı paylaşabilir mi?
Sinjai

182
type NUL > EmptyFile.txt

Önceki iki gönderiyi okuduktan sonra, bu ikisinin karışımı benim bulduğum şey. Biraz daha temiz görünüyor. "1 dosya kopyalandı" yönlendirme konusunda endişelenmenize gerek yok. mesajı NUL, önceki gönderinin yaptığı gibi ve ECHO OutputLineFromLoop >> Emptyfile.txtgenellikle bir toplu iş dosyasında izlenecek yanında güzel görünüyor .


13
1 Bu ilk değil Stderr vb kurmaca, akla gelen doğal biridir
Amit Naidu

2
Haklısın. Bu yöntem, copy komutundaki / y bayrağını önler.
djangofan

Kısa ve kolay. Buradaki diğer birkaç çözüm, sıfır baytlık yeni bir dosya oluşturmaz!
Christian

66

Diğer cevaplardan topladığım teknikler:

0 bayt dosyasını çok açık, geriye dönük uyumlu bir şekilde yapar:

type nul >EmptyFile.txt

fikir: anonim , Danny Backett , muhtemelen diğerleri, JdeBP'nin çalışmasından ilham aldım

0 baytlık dosya başka bir yolla geriye dönük olarak uyumludur:

REM. >EmptyFile.txt

aracılığıyla fikir: Johannes

0 baytlık dosya 3'üncü geriye dönük uyumlu görünüm:

echo. 2>EmptyFile.txt

aracılığıyla fikir: TheSmurf

0 bayt dosyası, muhtemelen Windows 2000'den bu yana kullanılabilen sistematik yol :

fsutil file createnew EmptyFile.txt 0

ile fikir: Emm

0 bayt dosya salt okunur dosyaların üzerine yazma

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

aracılığıyla fikir: copyitright

Tek bir yeni satır (2 bayt: 0x0D 0x0Aiçinde heks gösterimde , alternatif olarak yazılır \r\n):

echo.>AlmostEmptyFile.txt

Not: Hiçbir arasındaki boşluğu echo, .ve >.

idea yoluyla: Toplu iş dosyalarında bir satırsonu nasıl yankılandırabilirsiniz?


edit Bir dosyaya yönlendirilen geçersiz komutların boş bir dosya oluşturacağı anlaşılıyor . heh, bir özellik! uyumluluk: uknown

TheInvisibleFeature <nul >EmptyFile.txt

A 0 bayt dosya: geçersiz komut / rastgele bir adla (uyumluluk: uknown):

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

via: Hung Huynh tarafından rastgele için harika bir kaynak

düzenlemek 2 Andriy M Puan muhtemelen en eğlenceli / provoke şekilde geçersiz komutu kullanılarak bunu başarmak için

0 bayt dosya: geçersiz komut / funky yolu (uyumluluk: bilinmiyor)

*>EmptyFile.txt

ile fikir: Andriy M

0 bayt dosya 4. gelen yol :

break > file.txt

aracılığıyla fikir: foxidrive sayesinde açıklama arasında çift Gras !


O var type nul ...değil, type <nul ...aslında.
Andriy M

@AndriyM teşekkürler haklısın Düzenlemeyi yaptım! İlginçtir ki yanlış olanla ilginç bir şekilde çalışıyor. bu, dosya adına yönlendirilen geçersiz komutların boş bir dosya oluşturacağı anlamına gelebilir! sadece ile çalıştı NonExistentCommand <nul >EmptyFile.txtve çalıştı
n611x007

"geçersiz" olmasını isteyen bir sabit kodlu komut adına güvenmek güvenli olmayacağından, rastgele bir komut adı seçeneği
ekledim

2
Başka bir tane:, foxidrivebreak > file.txt sahne
Gras Double

3
Ve komutların çoğu >>"gerekiyorsa ancak varsa kesilmemelidir" gerekiyorsa kullanılabilir (Unix'in touchyaptığı gibi )
eckes

25

REM. > empty.file


Windows CE'de takılı kaldım ve bu dosya oluşturan ve boş olan tek cevap! Diğer yaklaşımlar ya boş bir çizgi ekliyor ya da işe yaramıyor ...
AntonyG

Bu çözümle ilgili tek sorun, geçerli dizinde REM adında bir dosya varsa ve yazdığınızda REM.cmd'nin "'rem" ile yanıt vermesidir. dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. "
DodgyCodeException

@DodgyCodeException, rem/yerine rem.bu sorunu çözüyor ...
aschipfl

@aschipfl teşekkürler, bu ilginç. 2010 yılındaki bu cevabın birbirlerinden yıllarca nasıl farklı yorumları olduğu da ilginç. Yavaş birwwww konuşma!
DodgyCodeException

8

Yazılacak dosyanın zaten var olması ve salt okunur olması ihtimali varsa, aşağıdaki kodu kullanın:

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

Hiçbir dosya yoksa, şunları yapın:

CD .>filename.ext

(DodgyCodeException'ın yorumuna göre güncellenmiş / değiştirilmiş kod)

Ortaya çıkabilecek hataları bastırmak için:

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

1
Bu çözümle ilgili tek sorun CD, geçerli dizinde (uzantı yok) adında bir dosya varsa ve yazdığınızda CD.cmd'nin "'CD" ile yanıt vermesidir. dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. " Bunun yerine CD .(noktadan önce boşluk bırakarak) yazarsanız , çalışır.
DodgyCodeException


7

Kitaplara eklemek için bir tane daha - yazmak için kısa ve tatlı.

break>file.txt
break>"file with spaces in name.txt"

Ben tırnak woyld atlamak sanırım
Nam G VU

@NamGVU Alan veya & gibi uzun dosya adı öğelerini kullanmayı seçerseniz, tırnaklar hedef dosya adında kullanılır. Bunlar dosya içeriğinin bir parçası değildir.
foxidrive

Evet katılıyorum ^ ^ Sizinkini tartışıldığı gibi güncelleme izni.
Nam G VU

@NamGVU Alıntılar uzun bir dosya adıyla veya dosya adı olmadan yerinde bırakılabilir. Kısa bir dosya adıyla komut satırından yazıldıysa, o zaman gereksiz yazmayı istemezsiniz.
foxidrive

Bu cevabı ikinci satırdan kaldırmanızı öneririm. IMO bu soruya şu ana kadar verilen en iyi yanıttır, ancak ikinci satır, kullanmaya çalışan kişi komut satırı için beyaz boşluk işlemenin temellerini bilmediği sürece gerçekten değer katmaz.
kayleeFrye_onDeck

2

Bunun TYPEyerine bir komut kullanabilirsiniz COPY. Bunu dene:

TYPE File1.txt>File2.txt

Nerede File1.txtboş.


3
Ayrıca yapabilirsiniztype NUL>File2.txt
Danny Beckett

6
BTW, File1.txt nasıl edinilir?
TomeeNS

1

Aşağıdaki gibi SETboş bir bytedosya oluşturmak için de kullanabilirsiniz

set x=x > EmptyFile.txt

Veya fazladan bir değişken oluşturmak istemiyorsanız, var olan bir değişkeni yeniden atayabilirsiniz.

set PROMPT=%PROMPT% > EmptyFile.txt

ya da bunun gibi:

set "PROMPT=%PROMPT%" > EmptyFile.txt

0

Sonsuz yaklaşımlar var.

Hiçbir şey vermeyen komutlar:

break
cls
color
goto
pushd
popd
prompt
title

Tuhaf Komutlar:

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

Eski printkomut boş bir dosya oluşturur:

print /d:EMPTY_TEXT_FILE nul

-2

En kolay yol:

echo. > Filename.txt


8
Bu boşluk karakteri, ardından satır başı karakteri ve ardından boş bir dosya değil , yeni bir satır karakteri içeren bir dosya oluşturur.
Andriy M

Cevabımı bakmaya değer (aşağıda) çünkü kodlamayı değiştiriyor.
Wolfpack'08

-3

ÖNEMLİ:

Kodlamayı ayarlamazsanız, birçok yazılım kırılabilir. git çok popüler bir örnektir.

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 bu büyük / küçük harfe duyarlıdır ve utf8 kodlamasını zorlar!


3
Kodlama, boş bir dosya oluşturmak için ne kadar önemlidir ? Boş bir bayt dosyası herhangi bir kodlamaya ihtiyaç duymaz ve bir BOM (0 bayt) ile işaretlemek zor
jeb

@jeb çünkü insanlar boş dosyaları doldurur ve doldurulmuş dosyalar ayar dosyası olarak kullanıldığında, UTF8 olmadığında hata oluştururlar. Aslında, insanların neredeyse her zaman dosyaları doldurduklarını ve boş bırakmadıklarını söyleyebilirim ve daha sonra değiştirmek istediğim boş bir dosya oluşturmak için başka bir yöntem kullanmazdım çünkü dosyalarımın neredeyse her zaman olduğundan emin olmak istiyorum UTF8'dir. Örneğin, github'daki .git öğreticisi kullanıcıdan daha sonra doldurulan boş bir dosya yapmasını ister ve diğer yöntem de garip Windows kodlaması olan bir dosya oluşturur.
Wolfpack'08
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.