'touch'に相当するWindows版(つまり、index.htmlを作成するnode.jsの方法)


195

Windowsマシンでこのエラーが発生する

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

私がするための指示に従うとき:

touch index.html app.js style.css

「タッチ」の使用に相当するウィンドウはありますか?この種のコマンドを実装するために、これらのファイルを手動で作成する必要がありますか(そしてタイムスタンプを変更するためにそれらを変更する必要がありますか)?それは非常に...ノードのようではない...


5
シンプルなGoogleの検索のウィンドウの実装のショーは、あなたがたくさんtouch。ここでのその他の議論:superuser.com/questions/10426/…そして、Cygwinライブラリは、WindowsでのUnixコマンドの一般的なツールセットです。
-jfriend00



1
PowerShellの使用中にここに到達した場合は、Raghuveerの回答に直接ジャンプしてください。
RBT 2019年

回答:


279

コマンドウィンドウタイプ:

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

2020年4月7日編集

callコマンドを使用することもできます

親バッチプログラムを停止せずに、あるバッチプログラムを別のバッチプログラムから呼び出します。callコマンドは、ラベルを呼び出しのターゲットとして受け入れます。

例:

call >> your_file.txt

2
Windows 7では、最初のオプションで怖いダイアログが表示さaccess deniedれ、コンソールに表示されます。2番目のオプションは問題なく機能します。
デコード

13
答えは間違っています。ファイルが存在しない場合にのみ機能します。ファイルが存在する場合、>>最初のファイルを使用しても何も行われず、2番目のファイルはファイルの最後に行を追加します。正しい答えはsuperuser.com/questions/10426/...
stenci

3
@stenci-存在しないファイルで試したところ、問題なく動作しました。それはファイルokを作成しました。たぶんあなたは管理者権限を欠いていますか?
dcp、2018

2
@stenciそのスーパーユーザーリンクは素晴らしいです。回答として投稿してください。
Denise Skidmore 2018年

@DeniseSkidmoreおかげで、私は答えを追加しました。それは深く落ち込んでおり、人々は私の答えよりもこの答えに対する私のコメントを読む可能性が高いですが、今ではあります。
stenci 2018年

66

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

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


35

次のコマンドを使用できます:ECHO >> filename.txt

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

更新:

空のファイルを使用する場合:NUL filename.txtをコピーします


8
さらに良いtype NUL > filename(0バイトのファイルを作成する)
krzemian

23
それが存在する場合はタッチと同じように、これはファイルを上書きしません:type NUL >> filename
ヘノン

3
これは、「ECHO is on」を追加するのに最適な方法です。あなたのファイルに。
ripvlan

4
これは既存のファイルのタイムスタンプを更新しません。
Denise Skidmore 2018年

1
Denise SkidmoreはOPではなくhenonに応答していると思います。(私は彼女のコメントの2番目です。)
キースラッセル

28

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

正解は次のとおりです。

copy /b filename.ext +,,

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


1
ファイルが存在しない場合、この回答は機能しません。(CMDはエラーを生成します。)
Keith Russell、

15

ここでどれだけ多くの回答が間違っているかに驚いてます。ファイルに何もエコーしないと、ファイルはのように埋められ、ファイルECHO is ONにエコーしようとする$nulと、文字どおりファイルに配置$nulされます。さらに、PowerShellの場合$null、ファイルにエコーしても実際には0kbファイルは作成されUCS-2 LE BOMませんが、としてエンコードされているため、ファイルにバイトオーダーマークがないことを確認する必要がある場合、乱雑になる可能性があります。

ここですべての回答をテストし、いくつかの同様の回答を参照した後、これらがコンソールシェルごとに機能することを保証できます。FileName.FileExtension必要なファイルの完全パスまたは相対パスに変更するだけtouchです。アップデートを提供してくれたKeith Russellに感謝しCOPY NUL FILE.EXTます。

CMDとタイムスタンプの更新

copy NUL FileName.FileExtension

これFileName.FileExtensionにより、サイズが0バイトではなく、配置した名前の新しいファイルが作成されます。ファイルがすでに存在する場合、基本的にはファイルをインプレースでコピーしてタイムスタンプを更新します。これは1:1の機能よりも回避策のほうが多いと思いますtouchが、他のコンテンツを変更せずにファイルのタイムスタンプを更新できるCMDの組み込みツールについては知りません。

タイムスタンプ更新なしのCMD

if not exist FileName.FileExtension copy NUL FileName.FileExtension

Powershell w / Timestampアップデート

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

はい、コンソール内でワンライナーとして機能します。PowerShellスクリプトファイルに配置する必要はありません。

タイムスタンプ更新なしのPowerShell

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


1
ファイルが存在し、その変更タイムスタンプを現在の時刻に更新したい場合はどうでしょうか?これらの例がそれをどのように達成するかはわかりません。
RoG、

2
素晴らしい観察、RoG!私はこれに対処するために答えを更新しました:)
kayleeFrye_onDeck

これが最良の答えです。しかし、私はまだ置き換えることによって、それを改善したいfsutil file CreateNew FileName.FileExtension 0ことでcopy NUL Filename.FileExtension、後者が短いと同じことをしているので、。
Keith Russell、

@KeithRussell IIRC私が使用copyしなかった特定の理由がありましたが、fsutilそれはしばらくの間です...私はそれが私がハハについて学んだ方法だとかなり確信していfsutilます!理由を
調べ

1
彼らが同じように振る舞うとしても、スピードテストをせずに、どちらかが優れていると言うのは時期尚早だと思います。
キースラッセル、

14

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

fsutil file createnew filename  requiredSize

続くパラメータ情報:

fsutil-ファイルシステムユーティリティ(実行中の実行可能ファイル)

file-ファイルアクションをトリガーします

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

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

requiredSize-作成されたファイルにファイルサイズをバイト単位で割り当てます


2
これを適切な回答と見なすには、いくつかの説明が必要です。これらの5つの単語の意味は明確ではありません。
jfriend00

1
私のために働いた... requiredSize事は奇妙ですが...コマンドは何千ものNULLs であなたの新しいファイルを埋めます...奇妙です...したがって、0を使用するだけ... requiredSizeをスキップするとエラーが発生します.. 。
dsdsdsdsd

1
この通信には管理者権限が必要です:(
ADJ

1
touchは、新しいファイルを作成するだけでなく、既存のファイルのタイムスタンプも更新します。
Denise Skidmore 2018年

1
touchは手っ取り早い方法です。それに最も近いのはechoまたはtypeでしょう。これはスクリプト用の非常に便利なツールであり、WS16で広く使用されていますが、いいね!docs.microsoft.com/en-us/windows-server/administration/...
アラン・

10

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

New-Item <filename.extension>

または

New-Item <filename.extension> -type file

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


1
これは、PowerShellが既定のコマンドシェルプログラムである今日のWindowsの世界での真の答えです。
RBT

どのWindowsを参照しているかわからない、私は新しいWindows 10をインストールしたばかりで、Powershellはデフォルトのシェルではありません。'New-Item' is not recognized as an internal or external command
user5359531

8

次のコマンドでtouchの機能を複製できます。

$>>filename

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

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

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

type nul >> filename

または:

$>>filename 2>nul

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

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


これはすばらしいことですが、%ERRORLEVEL%常にゼロ以外に設定されます。noopを追加することでその問題を修正できます|| cd.が、これは常にエラーを0に設定します。これは、「touch」が失敗した場合に必要なものではない可能性があります。
キースラッセル、

5

いいえコマンド-どちらtypeecho- Windows PowerShellのターミナルでのUnixの/ MacのOS Xの「タッチ」コマンドをエミュレートする必要はありません。次の省略表現を使用するだけです。

$null > filename

これにより、現在の場所に「filename」という名前の空のファイルが作成されます。「.txt」など、必要なファイル拡張子を使用します。

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


1
見逃したようですecho
sabithpocker 2017年

Windows cmdの@sabithpockerでは、$ nullは存在せず、存在しないため、出力は生成されません。あなたは$null > filenameにその空の出力を送信したファイル名(あなたが私のドリフトをキャッチした場合)。
ケルドンアレイン2017

1
@sabithpocker Windows Powershellではecho、標準のコマンドラインターミナル(cmd)なしで動作しますecho。混乱させて申し訳ありません。
Oliver Schafeld 2017

@OliverSchafeldとKeldon説明ありがとうございます。
sabithpocker 2017

1
これにより、BOMがファイルに追加されます。
kayleeFrye_onDeck 2018年

3

Windowsコマンドウィンドウ(cmd.exe)でcopy con [ファイル名]を使用することもできます

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

述べたように

echo >> index.html

それは任意のファイルで、任意の拡張子を持つことができます

notepad index.html

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


3

私は使用しますcmder(コマンドラインエミュレーター)

Windowsマシン内ですべてのLinuxコマンドを実行できます。

https://cmder.net/からダウンロードできます

私は本当にそれが好き


1
win10でCmderを開こうとすると、「パブリッシャーが不明」という警告が表示されます。残念。
Chris22


2

Windows 10のVisual Code Studioのターミナルから、これは私が新しいファイルを作成するために機能したものです:

type > hello.js
echo > orange.js
ni > peach.js

1

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

C:\cygwin64\bin\touch.exe <file_path>


-1

はい、Node for Touchを使用できます。WindowsのCmdまたはgitbashでそれを使用するだけで問題なく動作します。

ここに画像の説明を入力してください


私はこれに反対票を投じなかったが、それがおそらくそうだった理由を説明しよう。この質問にはのタグが付けられています。これは[cmd]、OPがCMD用にすぐに機能する回答を望んでいることを意味します。つまり、デフォルトのWindowsインストールにパックされていないコマンドラインユーティリティはありません。これにより、CScript、WScript、PowerShellなどの組み込みのWindowsスクリプト言語でさえ、事実上すべてのスクリプト言語が除外されます。重要なのは、それがCMD環境で機能するということではなく、CMDへのアクセス権を持つすべてのユーザーが可能であることです(権限の問題は含みません)。
kayleeFrye_onDeck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.