Auf einem Windows-Computer wird dieser Fehler angezeigt
'touch' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.
wenn ich den Anweisungen folge :
touch index.html app.js style.css
Gibt es ein Windows-Äquivalent zur Verwendung von "Touch"? Muss ich diese Dateien von Hand erstellen (und ändern, um den Zeitstempel zu ändern), um diese Art von Befehl zu implementieren? Das scheint nicht sehr ... knotenhaft ...
touch
. Weitere Diskussionen hier: superuser.com/questions/10426/… und die Cygwin-Bibliothek ist ein allgemeines Toolset von Unix-Befehlen unter Windows.touch
, um eine leere Datei mit PowerShell zu erstellen?Antworten:
in cmd Fenstertyp:
Dadurch werden 0 Bytes in der Datei your_file.txt erstellt.
Eine andere Möglichkeit ist die Verwendung des Befehls echo :
Echo. - erstellt eine Datei mit einer leeren Zeile.
Bearbeitet am 01.04.2019:
Wenn Sie den Inhalt der Datei beibehalten müssen, verwenden Sie >> anstelle von>
Beispiel
Bearbeitet am 07.04.2020
Sie können auch den Aufrufbefehl verwenden .
Beispiel:
quelle
access denied
in der Konsole sehen. Die zweite Option funktioniert gut!>>
die erste nichts bewirkt, fügt die zweite eine Zeile am Ende der Datei hinzu. Die richtige Antwort ist superuser.com/questions/10426/...Windows enthält nativ keinen
touch
Befehl.Sie können jede der verfügbaren öffentlichen Versionen oder Ihre eigene Version verwenden. Speichern Sie diesen Code als
touch.cmd
und platzieren Sie ihn irgendwo in Ihrem PfadDie Argumentliste wird durchlaufen, und für jedes Element, falls vorhanden, wird der Zeitstempel der Datei aktualisiert, andernfalls wird er erstellt.
quelle
Sie können diesen Befehl verwenden: ECHO >> filename.txt
Es wird eine Datei mit der angegebenen Erweiterung im aktuellen Ordner erstellt.
AKTUALISIEREN:
Verwenden Sie für eine leere Datei: Kopieren Sie NUL filename.txt
quelle
type NUL > filename
(erstellt eine 0-Byte-Datei)type NUL >> filename
Die Antwort ist falsch, es funktioniert nur, wenn die Datei nicht existiert. Wenn die Datei vorhanden ist und die erste nichts bewirkt, fügt die zweite eine Zeile am Ende der Datei hinzu.
Die richtige Antwort ist:
Ich habe es hier gefunden: /superuser/10426/windows-equivalent-of-the-linux-command-touch/764721#764721
quelle
Ich bin überrascht, wie viele Antworten hier einfach falsch sind . Wenn Sie nichts in eine Datei zurückgeben, wird die Datei mit etwas Ähnlichem gefüllt
ECHO is ON
, und wenn Sie versuchen,$nul
in eine Datei wiederzugeben, wird dies buchstäblich$nul
in die Datei eingefügt. Darüber hinaus führt das Echo$null
in eine Datei bei PowerShell nicht zu einer 0-KB-Datei, sondern zu einer codierten Datei,UCS-2 LE BOM
die unordentlich werden kann, wenn Sie sicherstellen müssen, dass Ihre Dateien keine Byte-Reihenfolge aufweisen.Nachdem ich alle Antworten hier getestet und auf einige ähnliche verwiesen habe, kann ich garantieren, dass diese pro Konsolen-Shell funktionieren. Wechseln Sie einfach
FileName.FileExtension
in den vollständigen oder relativen Pfad der gewünschten Dateitouch
. danke an Keith Russell für dasCOPY NUL FILE.EXT
Update:CMD mit Zeitstempel-Updates
copy NUL FileName.FileExtension
Dadurch wird eine neue Datei mit dem Namen "Was auch immer Sie platziert haben"
FileName.FileExtension
mit einer Größe von 0 Byte erstellt. Wenn die Datei bereits vorhanden ist, kopiert sie sich grundsätzlich an Ort und Stelle, um den Zeitstempel zu aktualisieren. Ich würde sagen, dies ist eher eine Problemumgehung als eine 1: 1-Funktionalität,touch
aber ich kenne keine integrierten Tools für CMD, mit denen der Zeitstempel einer Datei aktualisiert werden kann, ohne den anderen Inhalt zu ändern.CMD ohne Zeitstempel-Updates
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell mit Zeitstempel-Updates
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
Ja, es funktioniert in der Konsole als Einzeiler. Es ist nicht erforderlich, es in einer PowerShell-Skriptdatei abzulegen.
PowerShell ohne Zeitstempel-Updates
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
quelle
fsutil file CreateNew FileName.FileExtension 0
durchcopy NUL Filename.FileExtension
, da diese kürzer ist und tut das Gleiche.copy
über ,fsutil
aber es ist ein gewesen , während ... Ich bin ziemlich sicher , das ist , wie ich selbst darüber gelernt ,fsutil
haha! Ich werde versuchen herauszufinden, warum ...Verwenden Sie den folgenden Befehl in Ihrer Befehlszeile:
Die Parameterinfo wie folgt:
fsutil - Dateisystem-Dienstprogramm (die ausführbare Datei, die Sie ausführen)
Datei - Löst eine Dateiaktion aus
createnew - die auszuführende Aktion (neue Datei erstellen)
Dateiname - wäre buchstäblich der Name der Datei
requireSize - würde eine Dateigröße in Bytes in der erstellten Datei zuweisen
quelle
NULL
s ... seltsam ... also verwenden Sie einfach 0 ... erzeugt einen Fehler, wenn Sie die erforderliche Größe überspringen. .Unter Windows Power Shell können Sie den folgenden Befehl verwenden:
oder
quelle
'New-Item' is not recognized as an internal or external command
Sie können die Funktionalität von touch mit dem folgenden Befehl replizieren:
Dies bedeutet, dass versucht wird, ein aufgerufenes Programm auszuführen.
$
Wenn es$
jedoch nicht vorhanden ist (oder keine ausführbare Datei ist, die eine Ausgabe erzeugt), wird von dieser keine Ausgabe erzeugt. Es ist im Wesentlichen ein Hack auf die Funktionalität, es wird jedoch die folgende Fehlermeldung angezeigt:Wenn Sie die Fehlermeldung nicht möchten, können Sie zwei Dinge tun:
Oder:
Der
type
Befehl versucht, den Inhalt von nul anzuzeigen, der beim Lesen nur eine EOF (Dateiende) zurückgibt.2>nul
sendet eine Fehlerausgabe (Ausgabe 2) an nul (die alle Eingaben beim Schreiben ignoriert). Offensichtlich wird der zweite Befehl (mit2>nul
) durch dentype
Befehl überflüssig gemacht, da er schneller eingegeben werden kann. Aber zumindest haben Sie jetzt die Option und das Wissen.quelle
%ERRORLEVEL%
immer auf ungleich Null gesetzt. Sie können dieses Problem beheben, indem Sie ein Noop anhängen. Dadurch|| cd.
wird der Fehler jedoch immer auf 0 gesetzt. Dies ist möglicherweise nicht das, was Sie möchten, wenn die "Berührung" fehlschlägt.Es ist weder ein Befehl
type
noch ein Befehlecho
erforderlich, um den Touch-Befehl von Unix / Mac OS X in einem Windows Powershell-Terminal zu emulieren. Verwenden Sie einfach die folgende Kurzform:Dadurch wird an Ihrem aktuellen Speicherort eine leere Datei mit dem Namen "Dateiname" erstellt. Verwenden Sie eine beliebige Dateinamenerweiterung, z. B. '.txt'.
Quelle: /superuser/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (siehe Kommentare)
quelle
echo
$null > filename
senden diese leere Ausgabe an den Dateinamen (wenn Sie meinen Drift abfangen).echo
Im Standard-Befehlszeilenterminal (cmd), das Sie benötigenecho
. Entschuldigung für die Verwirrung.Sie können copy con [Dateiname] auch in einem Windows-Befehlsfenster (cmd.exe) verwenden:
Dadurch wird eine Datei mit dem Namen
yourfile.txt
im lokalen Verzeichnis erstellt.quelle
wie erwähnt
Es kann sich um eine beliebige Datei mit einer beliebigen Erweiterung handeln
Dadurch wird Ihre Datei im Editor geöffnet
quelle
Ich benutze
cmder
(einen Kommandozeilenemulator)Sie können alle Linux-Befehle auf einem Windows-Computer ausführen.
Es kann von https://cmder.net/ heruntergeladen werden.
ich mag es wirklich
quelle
Angenommen, die Datei ist vorhanden und Sie müssen nur den Zeitstempel aktualisieren.
quelle
Über das Terminal von Visual Code Studio unter Windows 10 konnte ich eine neue Datei erstellen:
quelle
Wenn Sie Cygwin auf Ihrem PC installiert haben , können Sie einfach die mitgelieferte ausführbare Datei zum Anfassen verwenden (auch über die Windows-Eingabeaufforderung):
quelle
Einfach, Beispiel mit txt-Datei
quelle
$null
der Datei hinzu.Ja, Sie können Node for Touch verwenden. Ich verwende das einfach und es funktioniert einwandfrei in Windows Cmd oder Gitbash
quelle
[cmd]
bedeutet, dass das OP eine sofort einsatzbereite Antwort für CMD wünscht, dh keine Befehlszeilenprogramme, die nicht mit einer Standard-Windows-Installation gepackt sind. Dadurch werden praktisch alle Skriptsprachen ausgeschlossen, auch integrierte Windows-Skriptsprachen wie CScript, WScript und PowerShell. Der Punkt ist nicht, dass es in der CMD-Umgebung funktioniert, sondern dass es für jeden möglich ist, der Zugriff auf CMD hat, ohne Berechtigungsprobleme.