2015-09-08 11 views
7

Ich habe ein Verzeichnis auf meinem Desktop mit PowerShell erstellt, und jetzt versuche ich, eine Textdatei darin zu erstellen.Erstellen einer neuen Datei mit Touch-Befehl in PowerShell Fehlermeldung

Ich habe das Verzeichnis auf das neue Verzeichnis geändert und touch textfile.txt eingegeben.

Dies wird die Fehlermeldung erhalte ich:

touch : The term 'touch' is not recognized as the name of a cmdlet, function, 
script file, or operable program. Check the spelling of the name, or if a path was 
included, verify that the path is correct and try again. 

At line:1 char:1 
+ touch file.txt 
+ ~~~~~ 
+ CategoryInfo   : ObjectNotFound: (touch:String) [], CommandNotFoundException 
+ FullyQualifiedErrorId : CommandNotFoundException` 

Warum funktioniert es nicht? Muss ich Git Bash die ganze Zeit benutzen?

+2

Wenn Sie msys/etc.Befehle, dann müssen Sie git bash verwenden oder haben git bash konfiguriert, um Ihr System '% PATH%' mit seinen bin-Verzeichnissen zu "verschmutzen". 'touch' ist kein Windows- oder Powershell-Befehl. Sie können 'Write-Error' usw. auch nicht von git bash verwenden. –

+0

danke für deine antwort! – Toni

Antwort

10

Wenn Sie einen Befehl touch in Powershell benötigen könnten Sie eine Funktion definieren, die das Richtige tut ™:

function touch { 
    Param(
    [Parameter(Mandatory=$true)] 
    [string]$Path 
) 

    if (Test-Path -LiteralPath $Path) { 
    (Get-Item -Path $Path).LastWriteTime = Get-Date 
    } else { 
    New-Item -Type File -Path $Path 
    } 
} 

die Funktion Setzen Sie in Ihrem profile so dass es verfügbar ist, wenn Sie Powershell starten.

definieren touch als Alias ​​(New-Alias -Name touch -Value New-Item) wird hier nicht funktionieren, weil New-Item einen obligatorischen Parameter -Type hat und Sie können keine Parameter in Powershell-Alias-Definitionen enthalten.

2

Wie Etan Reisner wies darauf hin, touch ist kein Befehl in Windows noch in PowerShell.

$null > textfile.txt 
$null | sc textfile.txt 
:

Wenn Sie wollen einfach nur eine neue Datei erstellen schnell (es sieht aus wie Sie nicht daran interessiert in den Anwendungsfall genau wissen, wo Sie nur das Datum einer bestehenden Datei aktualisieren), können Sie diese verwenden,

Beachten Sie, dass die erste standardmäßig Unicode verwendet, sodass Ihre Datei nicht leer ist. es enthält 2 Bytes, die Unicode BOM.

Die zweite verwendet sc (ein Alias ​​für Set-Content), die defaults to ASCII when used on the FileSystem.

Wenn Sie einen leeren String ('' oder "" oder [String]::Empty) statt $null Sie mit einem Zeilenumbruch auch am Ende werden.

+0

Ich bin an der Eingabeaufforderung '$ C: \ Users \ ... \ Ordner>' Wenn ich 'textfile.txt' gebe, erhalte ich eine Fehlermeldung. Bisher funktioniert es nur, wenn ich 'notepad textfile.txt' eintippe und nachdem ich durch eine Fehlermeldung dazu aufgefordert wurde, dass es keine solche Datei gibt, klicke ich auf die Option, es zu erstellen. – Toni

6

Wenn Sie Windows PowerShell verwenden, lautet der entsprechende Befehl für Mac/Unix: New-Item textfile.txt -type file.

+0

Dies ist nicht streng zutreffend. 'touch' aktualisiert den Zeitstempel einer Datei, wenn dieser existiert, ohne den Inhalt zu beeinflussen. 'New-Item' schlägt fehl, wenn die Datei existiert. – briantist

Verwandte Themen