Ohne Umleitung weisen Luc Vu oder Erik Konstantopoulos hierauf hin aus:
copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt
"Wie erstelle ich eine leere Textdatei aus einer Batchdatei heraus?" (2008) weist ebenfalls darauf hin:
type NUL > EmptyFile.txt
# auch
echo. 2>EmptyFile.txt
copy nul file.txt > nul # auch in Antwort unten in qid
REM. > empty.file
fsutil file createnew file.cmd 0 # um eine Datei auf einem gemappten Laufwerk zu erstellen
Nomad erwähnt eine originale Methode:
C:\Users\VonC\prog\tests>aaaa > empty_file
'aaaa' wird als interner oder externer Befehl, ein Programm oder eine Batchdatei erkannt.
C:\Users\VonC\prog\tests>dir
Ordner C:\Users\VonC\prog\tests
27.11.2013 10:40 .
27.11.2013 10:40 ..
27.11.2013 10:40 0 empty_file
In gleichem Geist schlägt Samuel in den Kommentaren vor:
der Kürzeste, den ich verwende, ist grundsätzlich der von Nomad:
.>out.txt
Es gibt einen Fehlermeldung:
'.' wird als interner oder externer Befehl nicht erkannt
Aber dieser Fehler ist auf stderr. Und >
leitet nur stdout um, wo nichts erzeugt wurde.
Deshalb die Erstellung einer leeren Datei.
Die Fehlermeldung kann hier ignoriert werden. Oder, wie in Rain's Antwort, umgeleitet nach NUL
:
.>out.txt 2>NUL
(Ursprüngliche Antwort, November 2009)
echo.>filename
(echo ""
würde tatsächlich "" in die Datei schreiben! Und echo
ohne '.' würde "Befehl ECHO aktiviert
" in die Datei schreiben...)
Anmerkung: Die resultierende Datei ist nicht leer, sondern enthält eine Zeilenschaltung: 2 Bytes.
Diese Diskussion weist auf eine echte Batch-Lösung für eine echte leere Datei hin:
filename
dir filename
11.09.2009 19:45 0 filename
1 Datei(en) 0 Bytes
Das "" leitet eine `nul` Antwort an den `set/p`-Befehl weiter, was dazu führt, dass die verwendete Variable unverändert bleibt. Wie üblich bei `set/p`, wird der rechts vom Gleichheitszeichen stehende String als Eingabeaufforderung ohne CRLF angezeigt.
Da hier der "rechts vom Gleichheitszeichen stehende String" leer ist... resultiert dies in einer leeren Datei.
------
Der Unterschied zu `cd. > filename` (das in [Patrick Cuffs Antwort](https://stackoverflow.com/questions/1702762/how-to-create-an-empty-file-in-the-command-line/1703040#1703040) erwähnt wird und ebenfalls eine Datei mit 0-Byte-Länge erstellt) ist, dass dieser "Umleitungs-Trick" (das `-Trick) verwendet werden kann, um **Zeilen ohne CR** zu **echoen**:`
``
out.txt
>out.txt
dir out.txt
> Der `dir`-Befehl sollte die Dateigröße als 11 Bytes anzeigen: "`helloworld!`".
`` ```
0 Stimmen
Gerade habe ich einen echten Batch-Befehl gefunden, der zu einer leeren Datei (0 Byte) führt: Ich habe meine Antwort aktualisiert.
4 Stimmen
Doppelt: stackoverflow.com/questions/210201, "Wie erstelle ich eine leere Textdatei aus einer Stapeldatei?". (Aber meiner bescheidenen Meinung nach sind die Antworten hier besser.)
0 Stimmen
Ja, der Befehl copy nul > file.txt wird erstellt und hat den Text "1 Datei(en) kopiert." Eine leere Datei wird nicht erstellt.
6 Stimmen
Dies beweist für mich nur, dass MS-DOS Müll ist, wenn man nicht mit einem Befehl eine leere Datei erstellen kann.
4 Stimmen
@KolobCanyon: Sie können natürlich, wie bereits gesagt, Antworten einfügen. Aber denken Sie wirklich, dass die Möglichkeit, schnell eine leere Datei zu erstellen, eine Priorität für ein Betriebssystem sein sollte, das sich an Endbenutzer richtet und mit nur 16 KB RAM auskommen muss? Im Großen und Ganzen ist es nicht wirklich nützlich, außer in einigen wenigen Ausnahmefällen.
0 Stimmen
Leiten Sie die Ausgabe von copy nicht um (was 1 Datei(en) kopiert ist). Kopieren Sie nul in die Datei: copy nul emptyFile.txt
0 Stimmen
cd > "filename.extension"
sollte die Arbeit erledigen, z.B.cd > file.txt
0 Stimmen
MSDos wird versuchen, Dateien zu löschen die 0 Byte groß sind, wenn Sie versuchen, sie zu kopieren. Windows tut das nicht.