Wie erstelle ich eine leere Datei in der Befehlszeile in Windows?

494

Wie erstelle ich eine leere Datei in der DOS / Windows-Befehlszeile?

Ich habe es versucht:

copy nul > file.txt

Es wird jedoch immer angezeigt, dass eine Datei kopiert wurde.

Gibt es eine andere Methode im Standard-Cmd?

Es sollte eine Methode sein, für die weder der Touch- Befehl von Cygwin noch andere nicht standardmäßige Befehle erforderlich sind . Der Befehl muss über ein Skript ausgeführt werden, damit keine Tastenanschläge verwendet werden können.

Grendler
quelle
Ich habe gerade einen echten Stapelbefehl gefunden, der zu einer leeren Datei (0 Byte) führt: Ich habe meine Antwort aktualisiert.
VonC
3
Duplikat: stackoverflow.com/questions/210201 , "Wie erstelle ich eine leere Textdatei aus einer Batchdatei?". (Aber meiner Meinung nach sind die Antworten hier besser.)
Peter Mortensen
Ja, der Befehl copy nul> file.txt wird mit dem Text "1 Datei (en) kopiert" erstellt. Eine leere Datei wird nicht erstellt.
Ripon Al Wasim
5
Dies beweist für mich nur, dass MS-DOS Müll ist, wenn Sie mit einem Befehl keine einfache leere Datei erstellen können.
Kolob Canyon
2
@KolobCanyon: Sie können natürlich anhand der bereits geposteten Antworten. Aber denken Sie wirklich, dass die Fähigkeit, schnell eine leere Datei zu erstellen, eine Priorität für ein Betriebssystem sein sollte, das sich an Endbenutzer richtet und in 16 KB RAM ausgeführt werden muss? Es ist schließlich keine besonders nützliche Sache, außer in einigen seltenen Fällen.
Harry Johnston

Antworten:

571

Ohne Weiterleitung weisen Luc Vu oder Erik Konstantopoulos auf Folgendes hin:

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

" Wie erstelle ich eine leere Textdatei aus einer Batchdatei? " (2008) verweist außerdem auf:

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 erwähnt ein Original :

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

Im gleichen Sinne schlägt Samuel in den Kommentaren vor :

Das kürzeste, das ich benutze, ist im Grunde das von Nomad:

.>out.txt

Es gibt einen Fehler:

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

Aber dieser Fehler ist auf stderr. Und >leitet nur stdout weiter, wo nichts produziert wurde.
Daher die Erstellung einer leeren Datei. Die Fehlermeldung kann hier ignoriert werden.


(Ursprüngliche Antwort, November 2009)

echo.>filename

(echo "" würde tatsächlich "" in die Datei einfügen! Und echoohne das '.' würde "Command ECHO activated " in die Datei einfügen ...)

Hinweis: Die resultierende Datei ist nicht leer sondern enthält eine Zeilenumbruchsequenz: 2 Byte.


Diese Diskussion zeigt eine echte Batch-Lösung für eine echte leere Datei:

 <nul (set/p z=) >filename

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

Das " <nul" leitet eine nulAntwort auf den set/pBefehl weiter, wodurch die verwendete Variable unverändert bleibt. Wie üblich set/pwird die Zeichenfolge rechts neben dem Gleichheitszeichen als Eingabeaufforderung ohne CRLF angezeigt.

Da hier die "Zeichenfolge rechts vom Gleichheitszeichen" leer ist ... ist das Ergebnis eine leere Datei.


Der Unterschied zu cd. > filename(der in Patrick Cuffs Antwort erwähnt wird und auch eine Datei mit einer Länge von 0 Byte erzeugt) besteht darin, dass dieses "Bit der Umleitung" (der <nul...Trick) verwendet werden kann, um Zeilen ohne CR zu wiederholen :

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

Der dirBefehl sollte die Dateigröße als 11 Byte angeben: " helloworld!".

VonC
quelle
2
Sie möchten echo.>filenamees tatsächlich, da es sowohl das Leerzeichen als auch das Zeilenumbruchzeichen enthält.
Agent_9191
1
Durch die Verwendung des remBefehls wird vermieden, dass eine Datei mit einer leeren Zeile erstellt wird.
Greg Hewgill
@ Agent_9191: true, ich habe meine Antwort aktualisiert. @ Greg: nicht sicher, was du meinst: rem>filenameerzeugt das gleiche Ergebnis (2 Bytes)
VonC
3
Noufal Ibrahim: Lass dich nicht täuschen. Sehen Sie sich einfach die nächste Antwort an, die eine viel einfachere und gleichermaßen funktionierende Lösung bietet. Was hier gemacht wird, ist im ersten Fall teilweise falsch (nicht leer, enthält aber einen Zeilenumbruch) und im zweiten Fall viel zu kompliziert.
Joey
1
@barlop Ja: das ist der Punkt: Es löst eine Fehlermeldung auf stderr aus, aber nichts (leere Zeichenfolge) auf stdout. Und >leiten Sie stdout nur an um out.txt. Daher die Erstellung einer leeren Datei. Sie können die Fehlermeldung in diesem Zusammenhang ignorieren.
VonC
270

Versuche dies:

type NUL > 1.txt

Dadurch wird definitiv eine leere Datei erstellt.

Justin
quelle
Dies fügt "NUL is ./NUL" zur Datei hinzu
dshgna
106

Hier ist ein anderer Weg:

cd. > filename
Patrick Manschette
quelle
11
cd. > filenameist nicht Arbeit für mich statt cd > filename Werke!
NaveenDA
3
"cd.> Dateiname" erstellt eine leere Datei. Andernfalls wird der Dateipfad mit dem Befehl "cd> Dateiname" in Ihre neu erstellte Datei gedruckt.
Niketan
6
Verwenden Sie dies: Das heißt, cd . > filename.extensionSie benötigen ein Leerzeichen zwischen cdund.
AIon
77

Wenn Sie wirklich eine völlig leere Datei ohne Ausgabe an stdout wollen, können Sie ein wenig schummeln:

copy nul file.txt > nul

Leiten Sie stdout einfach auf nul um, und die Ausgabe von copy verschwindet.

qid
quelle
1
Es schlägt fehl, wenn die Datei file.txt vorhanden ist.
Grendler
6
Wenn die Datei vorhanden ist, ist dies ein gutes Verhalten, da ich die Frage verstehe.
Wallyk
32
+1. Es ist erstaunlich, wie die akzeptierte Antwort halb falsch und halb verworren ist, während die offensichtlich richtige fast keine Gutschrift erhält. Hinzu kommt: type nul>filewäre ein anderer Weg.
Joey
@Joey der Akzeptierte hat eine Reihe von Lösungen, mit denen eine leere 0-Byte-Datei erstellt werden kann.
Barlop
2
@barlop: Als Referenz war dies die akzeptierte Antwort zum Zeitpunkt des Kommentars. Ich erhalte nicht jedes Mal eine Benachrichtigung, wenn sich eine Antwort ändert, auf die ich in einem Kommentar verweise.
Joey
48

Datei öffnen :

type file.txt

Neue Datei :

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

Inhalt bearbeiten:

notepad file.txt

Kopieren

copy file1.txt file1Copy.txt

Umbenennen

rename file1.txt file1_rename.txt

Datei löschen :

del file.txt
iCrazybest
quelle
Schöne Übersicht über cmd-Befehle
KargWare
32

Wenn ich Kommentare zu meinem Beitrag lese, muss ich zugeben, dass ich die Frage nicht richtig gelesen habe.

In der Windows-Befehlszeile besteht eine Möglichkeit darin, fsutil zu verwenden :

fsutil file createnew <filename> <size>

Ein Beispiel:

fsutil file createnew myEmptyFile.txt 0

Unten ist für * nix Befehlszeile.

touch filename

Dieser Befehl ändert das Änderungsdatum einer Datei oder erstellt es, wenn die Datei nicht gefunden wird.

nash
quelle
Leider heißt es in der Frage ausdrücklich: "Ohne den Touch-Befehl von Cygwin."
Qid
3
Es gibt Nicht-Cygwin-Implementierungen des Befehls touch: unxutils.sourceforge.net ist gut.
Greg Hewgill
In * nix bin ich persönlich an einer einfachen Sache interessiert, > filenamedie auch zum Abschneiden einer vorhandenen Datei verwendet werden kann.
Frank Farmer
fsutilbenötigt Administratorrechte. Das ist ein bisschen viel zu verlangen, um einfach eine leere Datei zu erstellen ...
Joey
@Joey Sind nicht alle diese Befehle ein bisschen viel, um eine leere Datei zu erstellen? Sogar der unten mit 120 Punkten ist viel, wenn Sie es gewohnt sind, zu berühren.
Johnny
29
echo "" > filename

Ich glaube, dass dies unter Windows / DOS funktioniert, aber meine letzte praktische Erfahrung mit beiden ist schon eine ganze Weile her. Ich weiß sicher, dass es auf praktisch jedem POSIX- kompatiblen Betriebssystem funktioniert .

Kris
quelle
2
Anscheinend ist VonCs Antwort besser als meine. Bitte stimmen Sie dies stattdessen zu.
Kris
3
Leider: echo "" zeigt doppelte Anführungszeichen an und sie werden in die Datei geschrieben, wenn der Stream dorthin umgeleitet wird. Das gleiche passiert mit just: echo> filename, da geschrieben wird, dass ECHO auch in der Datei aus / ein ist.
Grendler
Vielleicht könnten Sie "@echo off" in die Zeile setzen, bevor Sie die Datei erstellen, um dies zu umgehen?
Kris
27
call>file.txt

Das ist der sauberste Weg, den ich kenne.

nephi12
quelle
Was ist daran "sauber"?
GreenAsJade
4
Es gibt nichts in die Datei aus, während es leicht zu merken und zu verwenden ist.
Nephi12
Dies war die einfachste Lösung, die funktioniert, und am einfachsten zu merken.
Nhershy
12
cd > filename.cfg 

funktionierte beim Erstellen einer Datei in C: / Programme, bei denen Sie keinen direkten Zugriff auf Dateien erstellen können.

Subhashi
quelle
11

Sie können Ihre eigene Note schreiben.

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

copy con SomeFile.txt Enter

Ctrl-Z Enter

DRapp
quelle
Ich habe die Frage präzisiert, dass der Befehl über ein Skript ausgeführt wird, sodass leider keine Tastaturinteraktion funktioniert. Trotzdem danke.
Grendler
6

Noch eine andere Methode, die eine Null-Byte-Datei erstellt:

break > "file.txt"
foxidrive
quelle
6

So können Sie mit eine leere Datei erstellen

'' > newfile.txt

Navigieren Sie zum Verzeichnis und geben Sie den obigen Befehl in das PowerShell-Fenster ein.

Beachten Sie, dass dies an der Windows-Eingabeaufforderung nicht funktioniert.

Aswin 1054
quelle
5

Versuchen Sie Folgendes: abc > myFile.txt Zuerst wird eine Datei mit dem Namen myFile.txtim aktuellen Arbeitsverzeichnis (in der Eingabeaufforderung) erstellt. Dann wird der Befehl ausgeführt, abcder kein gültiger Befehl ist. Auf diese Weise haben Sie eine neue leere Datei mit dem Namen erhalten myFile.txt.

Nomade
quelle
2
Dies kann sehr falsch sein, wenn abces sich im Pfad befindet und eine praktische Funktion zum Formatieren aller Laufwerke mit Ausnahme des Installationsverzeichnisses darstellt.
Blutende Finger
5

type nul>filename erstellt eine neue leere Datei.

Entschuldigung, ich bin zu spät.

UPDATE : Funktioniert auch copy nul filenameohne Umleitung (offensichtlichere Lösung).

EKons
quelle
5

Verwenden Sie copy > your_file_name.extensionin der Eingabeaufforderung wie

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

Sie könnten auch verwenden:

echo. 2>foo

Die Debug-Ausgabe für echo.ist fast definitiv leer.

Craig
quelle
4

Ich habe viele Themen gelesen, aber es ist nicht der kürzeste Weg.

Bitte benutzen Sie den Befehl:

>copy /b NUL empty_file.txt

suhao399
quelle
4

Sie können den alten Befehl verwenden

copy con file_name.ext

Geben Sie nichts ein, drücken Sie einfach F6, um es zu speichern. Es wird jedoch "Datei kopiert" gedruckt. Wenn Sie die Datei öffnen, ist sie leer

Amado Saladino
quelle
4

Zum Erstellen eines beliebigen Dateityps können Sie den folgenden Code verwenden

Geben Sie nul> (Dateiname) ein. (Dateityp)

Z.B. Wenn Sie dann eine Textdatei erstellen möchten

Geben Sie nul> demo.txt ein

Wenn Sie eine Javascript-Datei erstellen möchten, dann

Geben Sie nul> demo.js ein

Darshan Jain
quelle
3

Das hat bei mir funktioniert,

echo > file.extension

Hier ist ein anderer Weg, den ich heute gefunden habe. Ich habe Ideen aus anderen Antworten erhalten, aber es hat funktioniert

sometext > filename.extension

Z.B.

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

Dies würde eine Fehlermeldung in der Eingabeaufforderung anzeigen, dass,

xyz ist nicht als interner oder externer Befehl, bedienbares Programm oder Batch-Datei.

Aber das Seltsame, was ich gefunden habe, war, dass die Datei im Verzeichnis erstellt wird, auch wenn der Befehl kein Standard-Windows-Befehl ist.

Glücklich
quelle
1
Es gibt mehr als ein "Handle", in das Konsolenanwendungen lesen / schreiben können. Die Standard sind: (0) STDIN, (1) STDOUT und (2) STDERR. Ich glaube, der Grund, warum Ihr Trick hier funktioniert, ist, dass die gesamte Ausgabe an das Fehlerhandle geht, aber Sie leiten STDOUT nur in die Datei. Versuchen Sie Folgendes: "xyz> emptyfile.txt 2> & 1", um STDERR zu dem von STDOUT verwendeten umzuleiten, das zufällig zu "emptyfile.txt" umleitet. Sie sollten jetzt die Fehlermeldung in dieser Datei sehen.
Brent Rittenhouse
3

Versuche dies:

echo $null >> filename 

Siehe: superUser

Shireef Khatab
quelle
3

Unter Windows habe ich das versucht

echo off > fff1.txt

und es wurde eine Datei mit dem Namen fff1.txt erstellt mit einer Dateigröße von 0 KB erstellt

Ich habe keine anderen Befehle gefunden, die eine leere Datei erstellen könnten.

Hinweis: Sie müssen sich in dem Verzeichnis befinden, in dem Sie die Datei erstellen möchten.

Omkar Agrawal
quelle
Vergessen Sie nicht, nach dem Erstellen der Datei zu wiederholen, wenn Sie dies benötigen.
QMaster
Dieser Befehl friert das cmd nach dem Klicken auf ENTER ein.
Kavin Raju S
Ich bin mir nicht sicher, warum dies so ist, aber ich denke, dass Sie nach Eingabe des obigen Befehls "Echo on" ausführen sollten.
Omkar Agrawal
3

Noch ein anderer Weg:

copy nul 2>empty_file.txt
GadBro
quelle
2

Ich habe es gerade in Windows versucht

copy con file.txt

dann EnterTaste drücken, dann drückenCtrl+Z Enter

Und es hat bei mir funktioniert.

Für Ubuntu erstelle ich normalerweise eine Datei mit dem VI-Befehl

vi file.txt

Es öffnet die Datei und drückt die ESCTaste. Geben Sie dann Folgendes ein: wp und drücken Sie die enterTaste. Es wird eine neue Datei mit leeren Daten erstellt.

ARJUN KP
quelle
2
  • Erstellen Sie eine Bat-Datei mit Inhalt echo '' > %1 . (Benennen Sie die Datei als touch.bat)
  • Fügen Sie den Ordner der PATH-Variablen hinzu.
  • Sie können touch verwenden, um Dateien zu erstellen. (Beispiel: touch temp.txtErstellt eine temp.txt-Datei.)

Weitere Informationen finden Sie in diesem Artikel.

Pranay Kumar
quelle
1

Heute habe ich einen neuen entdeckt :)

Dadurch wird der Titel des Befehlszeilenfensters geändert, es wird jedoch auch eine leere Datei erstellt.

title > file.txt
Ninix
quelle
1

Führen Sie CMD im Administratormodus aus und geben Sie Folgendes ein:

NUL > file_name.extention

oder Sie geben dies ein

echo .> file_name.extention
Lekens
quelle
1

Hier ist noch ein anderer Weg:

rem/ > file.ext

Der Schrägstrich /ist obligatorisch; ohne sie wurde der Umleitungsteil von auskommentiert rem.

aschipfl
quelle
0

Erstellen Sie zuerst Ihre Datei so, dass sie existiert:

echo . > myfile.txt

Überschreiben Sie dann die erstellte Datei mit einer leeren Version mit dem folgenden copyBefehl:

copy /y nul myfile.txt
Dowopfan
quelle