web-dev-qa-db-ja.com

Windowsの「touch」と同等のもの(つまり、index.htmlを作成するためのnode.jsの方法)

Windowsマシンでは、私はこのエラーが出ます

'touch'は、内部コマンドまたは外部コマンド、操作可能プログラム、またはバッチファイルとして認識されません。

の指示に従うと する:

touch index.html app.js style.css

'touch'を使うのと同等のウィンドウはありますか?この種のコマンドを実装するために、これらのファイルを手作業で作成する必要があります(そして、タイムスタンプを変更するためにそれらを変更する必要がありますか)。そうではありません... node-ish ...

126

cmdウィンドウタイプで:

type nul > your_file.txt

これにより、your_file.txtファイルに0バイトが作成されます。

それをする別の方法は echo コマンドを使うことです:

echo.> your_file.txt

エコー。 - 空の行が1行のファイルを作成します。

2019-04-01に編集:

ファイルの内容を保存する必要がある場合は、>ではなく>>を使用してください。

>   Creates a new file
>>  Preserves content of the file

type nul >> your_file.txt
182
Vlad Bezden

Windowsはtouchコマンドをネイティブに含みません。

あなたは利用可能な公開版のどれでも使うことができますか、あなたはあなた自身の版を使うことができます。このコードをtouch.cmdとして保存し、パスのどこかに配置します。

@echo off
    setlocal enableextensions disabledelayedexpansion

    (for %%a in (%*) do if exist "%%~a" (
        pushd "%%~dpa" && ( copy /b "%%~nxa"+,, & popd )
    ) else (
        type nul > "%%~fa"
    )) >nul 2>&1

引数リストを繰り返し処理し、存在する場合は要素ごとにファイルのタイムスタンプを更新し、それ以外の場合は作成します。

55
MC ND

あなたはこのコマンドを使うことができます:ECHO >> filename.txt

現在のフォルダに指定された拡張子のファイルが作成されます。

更新:

空のファイルを使うには: コピーNUL filename.txt

26
Aaron Clark

答えは間違っています。ファイルが存在しない場合にのみ機能します。ファイルが存在する場合、最初のコマンドを使用しても何も行われず、2番目のファイルではファイルの末尾に1行追加されます。

正しい答えは:

copy /b filename.ext +,,

私はそれをここで見つけました: https://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch/764721#764721

18
stenci

コマンドラインで次のコマンドを使用します。

fsutil file createnew filename  requiredSize

パラメータ情報は次のとおりです。

fsutil - ファイルシステムユーティリティ(実行している実行可能ファイル)

file - ファイルアクションを起動します

createnew - 実行するアクション(新しいファイルを作成する)

filename - 文字通りファイルの名前になります

requiredSize - 作成したファイルにファイルサイズをバイト単位で割り当てる

8
Ofer Haber

私はここでいくつの答えがちょうど 間違った であるかに驚いています。ファイルに何もエコーしないとECHO is ONのようなものでファイルが埋められ、ファイルに$nulをエコーし​​ようとすると文字通り$nulがファイルに入ります。さらにPowerShellの場合、$nullをファイルにエコー出力しても実際には0kbのファイルは作成されませんが、UCS-2 LE BOMとしてエンコードされたものは、ファイルにバイトオーダーマークがないことを確認する必要があると厄介になります。

ここですべての答えをテストし、いくつかの同様の答えを参照した後、私はこれらがコンソールシェルごとに動作することを保証できます。 FileName.FileExtensiontouchにしたいファイルのフルパスまたは相対パスに変更するだけです。

CMD

if not exist FileName.FileExtension (fsutil file CreateNew FileName.FileExtension 0) else (copy /b FileName.FileExtension +,,)

これにより、FileName.FileExtensionの代わりに0バイトの長さの新しいファイルが作成されます。タイムスタンプがelseのコピー操作ですでに存在する場合、タイムスタンプの更新以外には、そのファイルに対して何もしません。おそらくtouchの動作とまったく同じではありません。これは1:1機能よりも回避策であると思いますが、他のコンテンツを変更することなくファイルのタイムスタンプを更新できるCMD用の組み込みツールはありません。

パワーシェル

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName .FileExtension ).LastWriteTime = Get-Date}

これはCMDバージョンと同じ機能を持っています。それはそのタイムスタンプ以外の既存のファイルを台無しにしないでしょう、そしてそれはあなたがFileName.FileExtensionの代わりに使うことに決めたものは何でもの真新しい空のファイルを作成するでしょう。そしてはい、それはワンライナーとしてコンソール内で動作します。 PowerShellスクリプトファイルに配置する必要はありません。

タイムスタンプを変更したくない場合はどうしますか?

既存のファイルのタイムスタンプを変更したくない場合は、else句を削除するだけです。

CMD

if not exist FileName.FileExtension fsutil file CreateNew FileName.FileExtension 0

パワーシェル

if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}

7

次のコマンドでtouchの機能を再現できます。

$>>filename

これは$と呼ばれるプログラムを実行しようとすることですが、$が存在しない(または出力を生成する実行可能ファイルではない)場合、それによって出力は生成されません。これは本質的に機能上のハックですが、次のようなエラーメッセージが表示されます。

'$'は、内部コマンドまたは外部コマンド、操作可能プログラム、またはバッチファイルとして認識されません。

エラーメッセージが不要な場合は、次の2つのうちのいずれかを実行できます。

type nul >> filename

または

$>>filename 2>nul

typeコマンドは、nulの内容を表示しようとします。これは、読み取り時にEOF(ファイルの終わり)を返す以外のことはしません。

2>nulは、エラー出力(出力2)をnulに送信します(これは、書き込まれるとすべての入力を無視します)。 2番目のコマンド(2>nulを含む)は、入力が速いので、typeコマンドによって冗長になります。しかし、少なくともあなたは今、選択肢と知識を持っています。

6
Keldon Alleyne

Windows Powershell端末でUnix/Mac OS Xの 'touch'コマンドをエミュレートするためにコマンドは必要ありません - typenもechoも必要ありません。次の速記を使うだけです。

$null > filename

これにより、現在の場所に「filename」という名前の空のファイルが作成されます。あなたが必要とするかもしれない任意のファイル名拡張子を使用してください。 '。txt'。

ソース: https://superuser.com/questions/502374/equivalent-of-linux-touch-to-create-an-empty-file-with-powershell (コメントを参照)

5
Oliver Schafeld

述べたように

echo >> index.html

それはどんなファイルでもよい、そしてどんな拡張子でも

notepad index.html

これにより、メモ帳エディタでファイルが開きます。

3
Boris

Windowsのコマンドウィンドウ(cmd.exe)で copy con [filename] を使用することもできます。

C:\copy con yourfile.txt [enter]
C:\CTRL + Z [enter] //hold CTRL key & press "Z" then press Enter key.
^Z
    1 Files Copied.

これにより、ローカルディレクトリにyourfile.txtという名前のファイルが作成されます。

3
delliottg

Windows Power Shellでは、次のコマンドを使用できます。

New-Item <filename.extension>

または

New-Item <filename.extension> -type file

注: New-Item は、そのエイリアス ni に置き換えることができます。

2
Raghuveer

簡単、テキストファイルの例

echo $null >> filename.txt
0
Thiago Maciel

PCに Cygwin がインストールされている場合は、touchに提供されている実行可能ファイルを使用できます(Windowsコマンドプロンプトからも) :

C:\cygwin64\bin\touch.exe <file_path>
0
Uri Ziv