2015-09-08 81 views
7

デスクトップにPowerShellを使用して作成したディレクトリがあり、その中にテキストファイルを作成しようとしています。PowerShellでtouchコマンドで新しいファイルを作成するエラーメッセージ

ディレクトリを新しいディレクトリに変更し、touch textfile.txtと入力しました。

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` 

は、なぜそれが機能していない:

これは私が取得エラーメッセージですか?私はGit Bashを常に使用する必要がありますか?

+2

msys/etcを使用する場合は、git bashを使うか、binディレクトリでシステム '%PATH%'を "汚染"するようにgit bashを設定する必要があります。 'touch'はWindowsまたはpowershellコマンドではありません。 git bashから 'Write-Error'などを使うことはできません。 –

+0

あなたの答えをありがとう! – Toni

答えて

10

あなたはPowerShellでコマンドtouchが必要な場合は、正しいこと™を行う機能を定義することができます:あなたはPowerShellを起動するたび、それは利用可能だように、あなたのprofileに機能を入れ

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

を。 New-Itemは必須パラメータ-Typeを持っており、あなたはPowerShellのエイリアスの定義にパラメータを含めることができないため、ここでは動作しませんエイリアス(New-Alias -Name touch -Value New-Item)としてtouchの定義

2

Etan Reisnerが指摘されています。touchは、WindowsおよびPowerShellではコマンドではありません。

あなただけ(あなたがちょうど既存のファイルの日付を更新ユースケースでは興味がないように見える)すぐに新しいファイルを作成したい場合は、これらを使用することができます。

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

最初のファイルはデフォルトでUnicodeになりますので、ファイルは空ではありません。それは2バイト、Unicode BOMを含むでしょう。

scSet-Contentの別名)です(defaults to ASCII when used on the FileSystem)。

あなたの代わりにあなたも改行になってしまいます$nullの空の文字列(''または""または[String]::Empty)を使用している場合。

+0

プロンプト '$ C:\ Users \ ... \ folder>' 'textfile.txt'と入力するとエラーメッセージが表示されます。これまでのところ、 'notepad textfile.txt'と入力すれば動作し、そのようなファイルがないことを示すエラーメッセージが表示された後、そのファイルを作成するオプションをクリックします。 – Toni

6

Windows Powershellを使用している場合、Mac/Unixのタッチと同等のコマンドはNew-Item textfile.txt -type fileです。

+0

これは厳密には当てはまりません。 'touch'はファイルのタイムスタンプが存在する場合、その内容に影響を与えずに更新します。ファイルが存在する場合、 'New-Item'は失敗します。 – briantist

関連する問題