Windowsのコマンドラインで空のファイルを作成する方法


494

DOS / Windowsコマンドラインで空のファイルを作成する方法は?

私は試した:

copy nul > file.txt

ただし、常にファイルがコピーされたことが表示されます。

標準コマンドに他の方法はありますか?

これは、Cygwinからのtouchコマンドやその他の非標準コマンドを必要としないメソッドでなければなりません。コマンドはスクリプトから実行する必要があるため、キーストロークを使用できません。


空のファイル(0バイト)になる真のバッチコマンドを見つけました:回答を更新しました。
VonC 2009年

3
重複:stackoverflow.com/questions/210201、「バッチファイルから空のテキストファイルを作成する方法」(しかし、私見、答えはこちらのほうがいいです。)
Peter Mortensen、

はい、copy nul> file.txtコマンドが作成され、「1個のファイルがコピーされました」というテキストが含まれます。空のファイルは作成されません。
Ripon Al Wasim

5
これは、1つのコマンドでプレーンな空のファイルを作成できない場合、MS-DOSがゴミであることを証明するだけです。
Kolob Canyon

2
@KolobCanyon:もちろん、すでに投稿された回答に従って行うことができます。しかし、実際に空のファイルをすばやく作成する機能は、エンドユーザーを対象とし、16KのRAMで実行する必要があるオペレーティングシステムの優先事項であると思いますか?いくつかのまれなエッジケースを除いて、それは結局、特に有用なことではありません。
ハリージョンストン

回答:


571

リダイレクトなしでLuc VuまたはErik Konstantopoulosは次のように 指摘 ます。

copy NUL EMptyFile.txt
copy /b NUL EmptyFile.txt

バッチファイルから空のテキストファイルを作成するにはどうすればよいですか?」(2008)も以下を示しています。

type NUL > EmptyFile.txt
# also
echo. 2>EmptyFile.txt
copy nul file.txt > nul # also in qid's answer below
REM. > empty.file
fsutil file createnew file.cmd 0 # to create a file on a mapped drive

ノマドオリジナルのものについて言及しています:

C:\Users\VonC\prog\tests>aaaa > empty_file
'aaaa' is not recognized as an internal or external command, operable program or batch file.

C:\Users\VonC\prog\tests>dir

 Folder C:\Users\VonC\prog\tests

27/11/2013  10:40    <REP>          .
27/11/2013  10:40    <REP>          ..
27/11/2013  10:40                 0 empty_file

同じ精神で、サミュエルはコメントで提案します

私が使用する最も短いものは、基本的にはNomadによるものです。

.>out.txt

エラーが発生します:

'.' is not recognized as an internal or external command

しかし、このエラーはstderrにあります。そして>も生成されていない stdoutのみをリダイレクトします。
したがって、空のファイルが作成されます。エラーメッセージはここでは無視できます。


(元の回答、2009年11月)

echo.>filename

echo ""実際には ""をファイルに入れます!そしてecho'。'なしでは " Command ECHO activated"をファイルに入れます...)

注:結果のファイルは空ではありませが、戻り行シーケンス(2バイト)が含まれています。


この説明は、実際の空のファイルに対する真のバッチソリューションを示しています。

 <nul (set/p z=) >filename

 dir filename
 11/09/2009  19:45                 0 filename
 1 file(s)                         0 bytes

" <nul" nulset/pコマンドへの応答をパイプします。これにより、使用される変数は変更されません。の通常のようset/pに、等号の右側の文字列はCRLFなしのプロンプトとして表示されます。

ここでは「等号の右側の文字列」が空なので、結果は空のファイルになります。


cd. > filenamePatrick Cuffの回答で言及されており、0バイト長のファイルも生成する)との違いは、この「リダイレクトのビット」(<nul...トリック)を使用してCRなしで行エコーできることです。

<nul (set/p z=hello) >out.txt
<nul (set/p z= world!) >>out.txt
dir out.txt

dirコマンドは、11バイトにファイルサイズを示す必要があります:「helloworld!」。


2
echo.>filenameスペースと改行文字が含まれるため、実際に必要です。
Agent_9191 2009年

1
このremコマンドを使用すると、空の行を含むファイルの作成を回避できます。
グレッグ・ヒューギル

@ Agent_9191:はい、答えを更新しました。@Greg:意味がわからない:rem>filename同じ結果(2バイト)を生成する
VonC

3
ヌファルイブラヒム:騙されないでください。はるかに簡単で同等に機能するソリューションを持つ次の回答をご覧ください。ここで行われることは、最初のケースでは部分的に間違っており(空ではないが改行が含まれています)、2番目のケースでは非常に複雑です。
Joey

1
@barlopはい:それがポイントです:stderrでいくつかのエラーメッセージがトリガーされますが、stdoutでは何も(空の文字列)トリガーされません。そして>stdoutだけにリダイレクトしout.txtます。したがって、空のファイルが作成されます。この場合のエラーメッセージは無視してかまいません。
VonC 2017

270

これを試して:

type NUL > 1.txt

これは間違いなく空のファイルを作成します。


これにより、ファイルに「NUL is ./NUL」が追加されます
dshgna

106

ここに別の方法があります:

cd. > filename

11
cd. > filename仕事の代わりに私のために働くのではありませんcd > filename
NaveenDA 2017

3
「cd。> filename」は空のファイルを作成します。それ以外の場合は、「cd> filename」コマンドを使用して、新しく作成したファイルにファイルパスが印刷されます。
ニケタン2017

6
これを使用する:とのcd . > filename.extension間にスペースが必要であることを意味しますcd.
AIon

77

stdoutへの出力なしで完全に空のファイルが本当に必要な場合は、少しチートできます。

copy nul file.txt > nul

stdoutをnulにリダイレクトするだけで、コピーからの出力が消えます。


1
file.txtが存在する場合は失敗します。
Grendler、2009年

6
私が質問を理解しているので、ファイルが存在する場合に失敗するのは良い動作です。
wallyk 2009年

32
+1。明らかに正しい答えがほとんど信用を得られない一方で、受け入れられた答えが半分間違って半分複雑なものであるのは驚くべきことです。これに追加するには:type nul>file別の方法になります。
Joey

受け入れられた@Joeyには、空の0バイトファイルを作成するための一連のソリューションがあります。
Barlop

2
@barlop:参考までに、これはコメントが書かれた時点で受け入れられた回答でした。コメントで参照している回答が変更されるたびに通知が届きません。
ジョーイ

48

ファイルを開く:

type file.txt

新しいファイル:

Way 1 : type nul > file.txt
Way 2 : echo This is a sample text file > sample.txt
Way 3 : notepad myfile.txt <press enter>

コンテンツを編集:

notepad file.txt

コピーする

copy file1.txt file1Copy.txt

リネーム

rename file1.txt file1_rename.txt

ファイルを削除する :

del file.txt

cmdコマンドの
すばらしい

32

私の投稿のコメントを読んで、質問を正しく読んでいないことを認めなければなりません。

Windowsコマンドラインでの1つの方法は、fsutilを使用することです。

fsutil file createnew <filename> <size>

例:

fsutil file createnew myEmptyFile.txt 0

以下は* nixコマンドライン用です。

touch filename

このコマンドは、ファイルの変更日を変更するか、ファイルが見つからない場合に作成します。


残念ながら、この質問は具体的には「Cygwinからのタッチコマンドなし」と述べています。
QID

3
タッチコマンドにはCygwin以外の実装が存在します。unxutils.sourceforge.netが適しています。
グレッグヒューギル

* nixでは、私は単純> filenameにに部分的に慣れており、既存のファイルを切り捨てるために使用することもできます。
フランクファーマー

fsutil管理者権限が必要です。空のファイルを単に作成することを要求するのは少し多くです...
Joey

@Joeyこれらすべてのコマンドは、空のファイルを作成するために少し多すぎませんか?タッチに慣れていると下の120点でもたくさんあります。
ジョニー2015年

29
echo "" > filename

これはWindows / DOSで機能すると思いますが、どちらかを使った最後の実地体験はかなり前のことです。私はそれが基本的にすべてのPOSIX準拠のOS で動作するという事実を知っています。


2
見たところ、VonCの答えは私の答えよりも優れているので、代わりに賛成投票してください。
クリス

3
残念ながら、echo ""は二重引用符を表示し、ストリームがリダイレクトされるときにファイルに書き込まれます。同じことが、echo> filenameでも発生します。これは、ECHOがファイルに対してオフ/オンでも書き込まれるためです。
Grendler、2009年

それを回避するファイルを作成する前に、行に「@echo off」を付けることができますか?
クリス

27
call>file.txt

これは私が知っている最もクリーンな方法です。


「きれい」なのは何ですか?
GreenAsJade 2016年

4
覚えやすく使いやすい一方で、ファイルには何も出力しません。
nephi12

これは機能する最も簡単なソリューションであり、覚えやすいものでした。
nhershy

12
cd > filename.cfg 

ファイルを直接作成するアクセス権がないC:/ Program Filesにファイルを作成するときに機能しました。


11

あなた自身のタッチを書くことができます。

//touch.cpp
#include <fstream>
#include <iostream>

int main(int argc, char ** argv;)
{
  if(argc !=2)
  {
    std::cerr << "Must supply a filename as argument" << endl;
    return 1;
  }
  std::ofstream foo(argv[1]);
  foo.close();
  return 0;
}

6

コピーSomeFile.txt Enter

Ctrl-Z Enter


コマンドがスクリプトから実行されるため、残念ながらキーボード操作が機能しないという質問を明確にしました。とにかくありがとうございました。
Grendler、2009年


6

だからあなたは空のファイルを作成することができます

'' > newfile.txt

ディレクトリに移動し、PowerShellウィンドウで上記のコマンドを入力します。

これはWindowsコマンドプロンプトでは機能しないことに注意してください。


5

これを試してください:abc > myFile.txt 最初に、myFile.txt現在の作業ディレクトリ(コマンドプロンプト)に名前のファイルが作成されます。次にabc、有効なコマンドではないコマンドを実行します。このようにして、という名前の新しい空のファイルを取得しましたmyFile.txt


2
abcがパス内にあり、インストールディレクトリ以外のすべてのドライブをフォーマットするための便利な機能だった場合、これは非常に間違っている可能性があります。
指の出血

5

type nul>filename 新しい空のファイルを作成します。

すいません遅れました。

更新copy nul filenameリダイレクトなしでも機能します(より明確な解決策)。



4

あなたも使うことができます:

echo. 2>foo

のデバッグ出力echo.はほぼ間違いなく空になります。


4

多くのスレッドを読みましたが、最短の方法ではありません。

コマンドを使用してください:

>copy /b NUL empty_file.txt


4

古いコマンドを使用できます

copy con file_name.ext

何も入力せず、F6キーを押して保存します。ただし、「ファイルがコピーされました」と表示されますが、ファイルを開くと空になります。


4

任意のタイプのファイルを作成するには、次のコードを使用できます

タイプnul>(file_name)。(file_type)

例えば。テキストファイルを作成する場合は、

nul> demo.txtと入力します

JavaScriptファイルを作成する場合は、

タイプnul> demo.js


3

これは私のために働いた、

echo > file.extension

ここに私が今日見つけた別の方法があります、他の答えからアイデアを得ましたが、それはうまくいきました

sometext > filename.extension

例えば。

xyz > emptyfile.txt  //this would create an empty zero byte text file
abc > filename.mp4   //this would create an zero byte MP4 video media file

これにより、コマンドプロンプトにエラーメッセージが表示されます。

xyz 内部または外部コマンド、操作可能なプログラムまたはバッチファイルではありません。

しかし、奇妙なことに、コマンドが標準のWindowsコマンドではない場合でも、ファイルがディレクトリに作成されていることがわかりました。


1
コンソールアプリケーションが読み書きできる「ハンドル」は複数あります。標準的なものは、(0)STDIN、(1)STDOUT、および(2)STDERRです。ここであなたのトリックが機能する理由は、すべての出力がエラーハンドルに送られるが、STDOUTをファイルに送るだけだからです。"xyz> emptyfile.txt 2>&1"を使用して、STDERRを使用中のSTDOUTにリダイレクトします。これはたまたま "emptyfile.txt"にリダイレクトされます。このファイル内にエラーメッセージが表示されます。
ブレントRittenhouse


3

Windows ではこれをやってみました

echo off > fff1.txt

それは名前のファイルを作成fff1.txt 0キロバイトのファイルサイズを

空のファイルを作成する可能性のあるこれ以外のコマンドは見つかりませんでした。

注:ファイルを作成するディレクトリにいる必要があります。


必要に応じて、ファイルの作成後にエコーすることを忘れないでください。
QMaster

このコマンドは、ENTERをクリックした後、cmdをフリーズします。
Kavin Raju S

なぜそうなのかはわかりませんが、上記のコマンドを入力した後に「エコーオン」を実行する必要があると思います。
Omkar Agrawal


2

ちょうど私はwindowsで試しました

copy con file.txt

次にEnterキーを押してから押しますCtrl+Z Enter

そしてそれは私のために働いた。

Ubuntuでは通常、VIコマンドを使用してファイルを作成しています

vi file.txt

ファイルを開き、ESCキーを押してから:wpと入力しenterキーを押します。空のデータで新しいファイルを作成します。


2
  • コンテンツを含むbatファイルを作成しますecho '' > %1。(ファイルにtouch.batという名前を付けます)
  • フォルダーをPATH変数に追加します。
  • touchを使用してファイルを作成できます。(例:touch temp.txttemp.txtファイルを作成します)

詳細については、この記事を確認してください。


1

今日、私は新しいものを発見しました:)

これにより、コマンドラインウィンドウのタイトルが変更されますが、空のファイルも作成されます。

title > file.txt

1

CMDをアドミストレータモードで実行し、次のように入力します。

NUL > file_name.extention

またはこれを入力します

echo .> file_name.extention

1

ここにさらに別の方法があります:

rem/ > file.ext

スラッシュ/は必須です。それがなければ、リダイレクト部分はによってコメント化されましたrem


0

まず、ファイルが存在するように作成します。

echo . > myfile.txt

次に、copy次のコマンドを使用して、作成したファイルを空のバージョンで上書きします。

copy /y nul myfile.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.