web-dev-qa-db-ja.com

PowerShellエラーメッセージでtouchコマンドを使用して新しいファイルを作成する

PowerShellを使用して作成したデスクトップにディレクトリがあり、その中にテキストファイルを作成しようとしています。

ディレクトリを新しいディレクトリに変更し、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を使用する必要がありますか?

11

PowerShellでコマンドtouchが必要な場合は、The Right Thing™を実行する関数を定義できます。

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

この関数を profile に入れて、PowerShellを起動したときにいつでも使用できるようにします。

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

14
Ansgar Wiechers

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

14
Ryan Chase

Etan Reisner が指摘したように、touchはWindowsでもPowerShellでもコマンドではありません。

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

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

最初のものはデフォルトでUnicodeになるため、ファイルが空にならないことに注意してください。 nicode BOM の2バイトが含まれます。

2つ目はsc(- Set-Content )、これは デフォルトはASCII FileSystemで使用した場合 です。

空の文字列(''または""または[String]::Empty) の代わりに $null改行することになります。

6
briantist

ファイルを作成するパスにcdして、次のように入力します...

New-item -itemtype file yourfilenamehere.filetype

New-item -itemtypeファイルindex.js

2
Gerard

New-ItemNameItemType、およびPathパラメータの組み合わせは私にとってはうまくいきました。私の場合、gitの_netrcファイルを作成するには:

 New-Item -Name _netrc -ItemType File -Path $env:userprofile

参照

1
Paul Sweatte

Power Shellで単一ファイルを作成する場合:ni textfile.txt

同時に複数のファイルを作成する場合:touch a.txt,b.html,x.jsはLinuxコマンドです
ni a.txt,b.html,x.jsは、Windows Power Shellコマンドです

0
M2395