Jak utworzyć pusty plik w wierszu polecenia w systemie Windows?


494

Jak utworzyć pusty plik w wierszu poleceń DOS / Windows?

Próbowałem:

copy nul > file.txt

ale zawsze pokazuje, że plik został skopiowany.

Czy jest jakaś inna metoda w standardowym cmd?

Powinna to być metoda niewymagająca polecenia dotykowego Cygwin ani żadnych innych niestandardowych poleceń. Polecenie musi zostać uruchomione ze skryptu, aby nie można było używać klawiszy.


Właśnie znalazłem prawdziwe polecenie wsadowe, w wyniku którego powstał pusty plik (0 bajtów): Zaktualizowałem swoją odpowiedź.
VonC

3
Duplikat: stackoverflow.com/questions/210201 , „Jak utworzyć pusty plik tekstowy z pliku wsadowego?”. (Ale, IMHO, odpowiedzi są lepsze tutaj.)
Peter Mortensen

Tak, polecenie kopiuj nul> plik.txt jest tworzone z tekstem „1 plik (i) skopiowany”. Pusty plik nie jest tworzony.
Ripon Al Wasim,

5
To dla mnie tylko dowodzi, że MS-DOS jest śmieciem, jeśli nie można utworzyć zwykłego pustego pliku za pomocą jednego polecenia.
Kolob Canyon

2
@KolobCanyon: oczywiście możesz odpowiedzieć na już opublikowane odpowiedzi. Ale czy naprawdę uważasz, że możliwość szybkiego utworzenia pustego pliku powinna być priorytetem dla systemu operacyjnego skierowanego do użytkowników końcowych i wymagającego uruchomienia w 16 KB pamięci RAM? W końcu nie jest to szczególnie przydatne, z wyjątkiem kilku rzadkich przypadków.
Harry Johnston,

Odpowiedzi:


571

Bez przekierowania Luc Vu lub Erik Konstantopoulos zwracają uwagę na:

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

Jak utworzyć pusty plik tekstowy z pliku wsadowego? ” (2008) wskazuje również:

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 wspomina o oryginale :

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

W tym samym duchu Samuel sugeruje w komentarzach :

najkrótszy, którego używam, to w zasadzie ten autorstwa Nomada:

.>out.txt

Daje błąd:

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

Ale ten błąd dotyczy stderr. I >tylko przekierowuje standardowe wyjście, w którym nic nie zostało wyprodukowane.
Stąd utworzenie pustego pliku. Komunikat o błędzie można tutaj pominąć.


(Oryginalna odpowiedź, listopad 2009 r.)

echo.>filename

( echo ""wstawiłby „” do pliku! A echobez „.” wstawiłby „ Command ECHO activated” do pliku ...)

Uwaga: wynikowy plik nie jest pusty, ale zawiera sekwencję linii powrotnej: 2 bajty.


Ta dyskusja wskazuje na prawdziwe rozwiązanie wsadowe dla naprawdę pustego pliku:

 <nul (set/p z=) >filename

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

<nul” Potokuje nulodpowiedź na set/ppolecenie, co spowoduje, że zmienna pozostanie niezmieniona. Jak zwykle w set/pprzypadku łańcucha po prawej stronie znaku równości wyświetlany jest monit bez CRLF.

Ponieważ tutaj „ciąg po prawej stronie znaku równości” jest pusty ... wynikiem jest pusty plik.


Różnica w stosunku do cd. > filename(która jest wspomniana w odpowiedzi Patricka Cuffa i powoduje również utworzenie pliku o długości 0 bajtów) polega na tym, że ten „kawałek przekierowania” ( <nul...sztuczka) może być użyty do echa linii bez CR :

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

dirPolecenie powinno wskazywać rozmiar pliku jako 11 bajtów: „ helloworld!”.


2
tak naprawdę byś chciał, echo.>filenameponieważ będzie zawierał spację oraz znak nowej linii.
Agent_9191,

1
Użycie rempolecenia pozwala uniknąć tworzenia pliku z pustą linią.
Greg Hewgill

@ Agent_9191: prawda, zaktualizowałem swoją odpowiedź. @Greg: nie jestem pewien, co masz na myśli: rem>filenamedaje ten sam wynik (2 bajty)
VonC

3
Noufal Ibrahim: nie daj się zwieść; zobacz następną odpowiedź, która ma o wiele łatwiejsze i równie działające rozwiązanie. To, co tu zrobiono, jest częściowo niepoprawne w pierwszym przypadku (nie puste, ale zawiera podział wiersza) i jest nadmiernie skomplikowane w drugim przypadku.
Joey,

1
@barlop Tak: o to chodzi: wywołuje komunikat o błędzie na stderr, ale nic (pusty ciąg) na stdout. I >przekieruj standardowe wyjście tylko na out.txt. Stąd utworzenie pustego pliku. W tym kontekście możesz zignorować komunikat o błędzie.
VonC

270

Spróbuj tego:

type NUL > 1.txt

to z pewnością utworzy pusty plik.


Dodaje to do pliku „NUL is ./NUL”
dshgna,

106

Oto inny sposób:

cd. > filename

11
cd. > filenamenie jest dla mnie pracą, a nie pracą cd > filename !
NaveenDA

3
„cd.> nazwa pliku” tworzy pusty plik, w przeciwnym razie ścieżka pliku zostanie wydrukowana w nowo utworzonym pliku za pomocą polecenia „cd> nazwa pliku”.
niketan

6
Użyj tego: cd . > filename.extensionOznacza to, że potrzebujesz odstępu między cdi.
AIon

77

Jeśli naprawdę chcesz całkowicie pusty plik, bez wyjścia na standardowe wyjście, możesz oszukać:

copy nul file.txt > nul

Wystarczy przekierować stdout na nul, a wynik kopiowania zniknie.


1
Nie powiedzie się, jeśli plik file.txt istnieje.
Grendler,

6
Niepowodzenie, jeśli plik istnieje, jest dobrym zachowaniem, ponieważ rozumiem pytanie.
wallyk

32
+1. To zadziwiające, że przyjęta odpowiedź jest czymś w połowie błędnym i w połowie skomplikowanym, podczas gdy ta oczywiście poprawna prawie nie zasługuje na uznanie. Aby dodać do tego: type nul>filebyłby inny sposób.
Joey,

@Joey zaakceptowany ma kilka rozwiązań, które działają, aby utworzyć pusty plik 0-bajtowy.
barlop

2
@barlop: Dla porównania, to była odpowiedź akceptowana w momencie Komentarz został napisany. Nie otrzymuję powiadomienia za każdym razem, gdy zmienia się odpowiedź, do której odsyłam w komentarzu.
Joey,

48

Otwórz plik :

type file.txt

Nowy plik :

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

Edytuj zawartość:

notepad file.txt

Kopiuj

copy file1.txt file1Copy.txt

Przemianować

rename file1.txt file1_rename.txt

Usunąć plik :

del file.txt

Ładny przegląd poleceń cmd
KargWare,

32

Czytając komentarze do mojego postu, muszę przyznać, że nie przeczytałem poprawnie pytania.

W wierszu poleceń systemu Windows jednym ze sposobów byłoby użycie fsutil :

fsutil file createnew <filename> <size>

Przykład:

fsutil file createnew myEmptyFile.txt 0

Poniżej znajduje się wiersz polecenia * nix.

touch filename

To polecenie zmienia datę modyfikacji pliku lub tworzy go, jeśli plik nie zostanie znaleziony.


Niestety pytanie wyraźnie stwierdza: „Bez polecenia dotykowego Cygwin”.
qid

3
Istnieją implementacje polecenia dotykowego inne niż Cygwin: unxutils.sourceforge.net jest dobry.
Greg Hewgill

W * nix osobiście jestem zwolennikiem prostego > filename, którego można również użyć do obcięcia istniejącego pliku.
Frank Farmer,

fsutilpotrzebuje uprawnień administracyjnych. To trochę za dużo, aby po prostu utworzyć pusty plik ...
Joey,

@Joey Czy wszystkie te polecenia nie są zbyt duże, aby utworzyć pusty plik? Nawet ten poniżej z 120 punktami to dużo, gdy jesteś przyzwyczajony do dotykania.
Johnny

29
echo "" > filename

Wierzę, że to działa na Windowsie / DOSie, ale moje ostatnie praktyczne doświadczenie z którymkolwiek z nich było całkiem dawno. Wiem na pewno, że działa w zasadzie na każdym systemie operacyjnym zgodnym z POSIX .


2
Wygląda na to, że odpowiedź VonC jest lepsza niż moja, więc proszę, głosujcie zamiast tego.
Kris,

3
Niestety: echo „” wyświetla podwójne cudzysłowy i są zapisywane w pliku, gdy strumień jest przekierowywany do niego. To samo dzieje się tylko z: echo> nazwa_pliku, ponieważ zapisuje, że ECHO jest również wyłączone / włączone w pliku.
Grendler,

może mógłbyś „@echo wyłączyć” w linii przed utworzeniem pliku, aby to obejść?
Kris,

27
call>file.txt

to najczystszy sposób jaki znam.


Co w tym jest „czystego”?
GreenAsJade

4
nie przekazuje nic do pliku, będąc łatwym do zapamiętania i użytkowania.
nephi12

To było najprostsze rozwiązanie, które działa i najłatwiejsze do zapamiętania.
nhershy

12
cd > filename.cfg 

działało podczas tworzenia pliku w C: / Program Files, gdzie nie masz dostępu do bezpośredniego tworzenia plików.


11

Możesz napisać własny dotyk.

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

copy con SomeFile.txt Enter

Ctrl-Z Enter


Sprecyzowałem pytanie, że polecenie będzie uruchamiane ze skryptu, więc niestety żadna interakcja klawiatury nie działa. Mimo wszystko dziekuję.
Grendler,

6

Jeszcze inna metoda, która tworzy plik zero bajtów:

break > "file.txt"

6

dzięki czemu możesz utworzyć pusty plik za pomocą

'' > newfile.txt

przejdź do katalogu i wpisz powyższe polecenie w oknie PowerShell.

Uwaga: to nie zadziała w wierszu polecenia systemu Windows.


5

Spróbuj: abc > myFile.txt Najpierw utworzy plik o nazwie myFile.txtw bieżącym katalogu roboczym (w wierszu polecenia). Następnie uruchomi polecenie, abcktóre nie jest prawidłowym poleceniem. W ten sposób otrzymałeś nowy pusty plik o nazwie myFile.txt.


2
Mogłoby to być bardzo złe, gdyby abcznajdowało się na ścieżce i było funkcją ułatwiającą formatowanie wszystkich dysków oprócz katalogu instalacyjnego.
Krwawiące palce

5

type nul>filename utworzy nowy pusty plik.

Przepraszam za spóźnienie.

AKTUALIZACJA : copy nul filenameDziała również bez przekierowywania (bardziej oczywiste rozwiązanie).



4

Możesz również użyć:

echo. 2>foo

Wyjście debugowania dla echo.prawie na pewno będzie puste.


4

Czytam wiele wątków, ale nie jest to najkrótsza droga.

Proszę użyć polecenia:

>copy /b NUL empty_file.txt


4

Możesz użyć starej komendy

copy con file_name.ext

nic nie wpisuj, po prostu naciśnij F6, aby go zapisać, jednak wydrukuje „Plik skopiowany”, ale po otwarciu plik będzie pusty


4

Do utworzenia dowolnego typu pliku możesz użyć następującego kodu

wpisz nul> (nazwa_pliku). (typ_pliku)

Na przykład. Jeśli chcesz utworzyć plik tekstowy, to

wpisz nul> demo.txt

Jeśli chcesz utworzyć plik javascript, to

wpisz nul> demo.js


3

To działało dla mnie

echo > file.extension

Oto inny sposób, który dzisiaj znalazłem, czerpałem pomysły z innych odpowiedzi, ale zadziałało

sometext > filename.extension

Na przykład.

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

Spowoduje to wyświetlenie komunikatu o błędzie w wierszu polecenia, który:

xyz nie jest poleceniem wewnętrznym ani zewnętrznym, programem operacyjnym ani plikiem wsadowym.

Ale dziwną rzeczą, którą znalazłem, jest to, że plik jest tworzony w katalogu, nawet jeśli polecenie nie jest standardowym poleceniem systemu Windows.


1
Istnieje więcej niż jeden „uchwyt”, który aplikacje konsolowe mogą odczytywać / zapisywać. Standardowe to: (0) STDIN, (1) STDOUT i (2) STDERR. Uważam, że powód, dla którego twoja sztuczka działa tutaj, jest taki, że wszystkie dane wyjściowe trafiają do uchwytu błędu, ale kierujesz STDOUT tylko do pliku. Spróbuj wykonać: „xyz> emptyfile.txt 2> & 1”, aby przekierować STDERR do dowolnego używanego STDOUT, co zdarza się przekierowywać do „emptyfile.txt”. Powinieneś teraz zobaczyć komunikat o błędzie wewnątrz tego pliku.
Brent Rittenhouse


3

W systemie Windows próbowałem to zrobić

echo off > fff1.txt

i utworzył plik o nazwie fff1.txt o rozmiarze pliku 0kb

Nie znalazłem żadnych innych poleceń niż to, które mogłyby stworzyć pusty plik.

Uwaga: Musisz znajdować się w katalogu, w którym chcesz utworzyć plik.


w razie potrzeby nie zapomnij włączyć echa po utworzeniu pliku.
QMaster

To polecenie zawiesza cmd po kliknięciu ENTER.
Kavin Raju S

Nie jestem pewien, dlaczego tak się dzieje, ale myślę, że powinieneś zrobić „echo” po wprowadzeniu powyższego polecenia.
Omkar Agrawal


2

Właśnie próbowałem w systemie Windows

copy con file.txt

następnie naciśnij Enterklawisz, a następnie naciśnijCtrl+Z Enter

I to zadziałało dla mnie.

W systemie Ubuntu zwykle tworzę plik za pomocą komendy VI

vi file.txt

Otworzy plik, następnie naciśnij ESCklawisz, a następnie wpisz : wp, a następnie naciśnij enterklawisz. Stworzy nowy plik z pustymi danymi.


2
  • utwórz plik nietoperza z zawartością echo '' > %1. (nazwij plik jako touch.bat)
  • dodaj folder do zmiennej PATH.
  • możesz używać dotyku do tworzenia plików. (Np .: touch temp.txttworzy plik temp.txt)

sprawdź ten artykuł, aby uzyskać więcej informacji.


1

Dziś odkryłem nowy :)

Spowoduje to zmianę tytułu okna wiersza poleceń, ale także utworzy pusty plik.

title > file.txt

1

Uruchom CMD w trybie administratora i wpisz:

NUL > file_name.extention

lub wpiszesz to

echo .> file_name.extention

1

Oto jeszcze jeden sposób:

rem/ > file.ext

Cięcie /jest obowiązkowe; bez tego część przekierowania została skomentowana przez rem.


0

Najpierw utwórz plik, aby istniał:

echo . > myfile.txt

Następnie zastąp utworzony plik pustą wersją za pomocą copypolecenia:

copy /y nul myfile.txt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.