バッチファイルから空のテキストファイルを作成する方法


244

誰かがBATファイルを使用してMSDOSで空のファイルを作成するコマンドを思い出せますか?


3
また、stackoverflow.com / questions / 1702762の「コマンドラインで空のファイルを作成する方法」を参照してください。
Peter Mortensen

6
DOSとを混同していませcmd.exeんか?
ユーザー不明の

READ ME:Set-Content "your_file.txt" .gitignore -Encoding utf8これは大文字と小文字を区別し、utf8エンコーディングを強制します!(これも回答として投稿しました)。
Wolfpack'08

回答:


235
echo. 2>EmptyFile.txt

49
これはstdoutに改行を反映しますが、私の答えはそうではありません。
ephemient

7
時にはそれは関連しています。私は、0バイトのファイルを取得する目的でNULをコピーする(またはNUL> fileと入力する)だけのアイデアが得られるまで、うそをついていました。:-)
ジョーイ

18
ephemientの回答とこれをマージするには、「echo。> NUL 2> EmptyFile.txt」を実行して、改行を出力せずに同じ結果を得ることができます
cmptrgeekken

7
なぜ.echo.
ニンファム

3
@Reegan echo 2なしで使用した場合.、コンソールには「ECHO is off」と表示されます。echo. 2改行を表示するだけでコンソール出力を効果的に消音します。
OneManBand 2014年

362
NUL EmptyFile.txtをコピー

DOSには、すべてのディレクトリに存在するいくつかの特別なファイル(実際にはデバイス)があり、NULUNIXと同等です/dev/null。これは、常に空であり、書き込むものをすべて破棄する魔法のファイルです。ここに他のいくつかのリストがあります。CON時々同様に便利です。

出力がまったくないようにするには、次を使用できます

/ y NUL EmptyFile.txt> NULをコピー

/ycopy出力がに送られるときに見えない質問をするのを防ぎますNUL


36
+1-質問には空のファイルが含まれているため、受け入れられた回答は間違っています。
ジョー

9
DannySmurfのソリューションは実際には空のファイルを作成します-改行はstdoutに行き、何もstderrに行きません(新しいファイルに向けられます)。とにかく+1に感謝
ephemient '24年

2
「nul」と入力し、EmptyFile.txtが最も短い解決策です。それでもあなたの答えは受け入れられた解決策よりも優れています、あなたのファイルは本当に空になるからです。+1
TPAKTOPA 2015年

3
警告:はい、質問は空のファイルを作成する方法に関するものでしたが、通常は「ファイルが存在することを確認する」必要があります。copy /Y NULコマンドを使用すると、既存のコンテンツが消去される可能性があります。Unixのtouchコマンドに慣れている場合、これは期待したものとはまったく異なる可能性があります。)type NUL >> emptyfile.txtこの点で、使用する方が安全です。
eckes

CONこの回答にリンクされているものを除いて、に関する情報は見つかりませんでした。誰かがいくつかの軽い読書を共有できますか?
シンジャイ2018年

182
type NUL > EmptyFile.txt

前の2つの投稿を読んだ後、この2つのブレンドが思いついたものです。少しきれいに見えます。「1個のファイルがコピーされました」のリダイレクトについて心配する必要はありません。NUL以前の投稿と同様に、へのメッセージで、ECHO OutputLineFromLoop >> Emptyfile.txt通常はバッチファイルで続くの横に表示されます。


13
1これは最初に思い浮かぶのが自然1、標準エラー出力ではないなどと工夫である
アミットNaidu

2
あなたは正しいです。この方法では、copyコマンドの/ yフラグが回避されます。
djangofan 2013年

短くて簡単。他のいくつかの解決策では、0バイトの新しいファイルを作成しません!
Christian St.

66

他の回答から集めたテクニック:

0バイトのファイルを非常に明確で下位互換性のある方法にします。

type nul >EmptyFile.txt

アイデア:anonymousDanny Backett、おそらく他の人、JdeBPの仕事に触発された自分

0バイトのファイルは別の方法であり、下位互換性があります。

REM. >EmptyFile.txt

アイデア:Johannes

3番目の下位互換性のある外観の0バイトのファイル

echo. 2>EmptyFile.txt

アイデア:TheSmurf

Windows 2000以降でおそらく体系的に使用できる0バイトのファイル

fsutil file createnew EmptyFile.txt 0

アイデア:Emm

読み取り専用ファイルを上書きする0バイトのファイル

ATTRIB -R filename.ext>NUL
(CD.>filename.ext)2>NUL

アイデア:copyitright

単一の改行(2バイト:0x0D 0x0A16進表記、代わりとして書か\r\n):

echo.>AlmostEmptyFile.txt

注:なしとの間のスペースecho.および>

アイデア:バッチファイルで改行をエコーするにはどうすればよいですか?


編集と思われ、無効なコマンドリダイレクトされたファイルには、空のファイルを作成します。えっと、機能!互換性:不明

TheInvisibleFeature <nul >EmptyFile.txt

0バイトのファイル:無効なコマンド/ランダムな名前(互換性:uknown):

%RANDOM%-%TIME:~6,5% <nul >EmptyFile.txt

経由:Hung Huynhによるランダムの素晴らしいソース

編集2 Andriy Mは無効なコマンドを介してこれを達成するためのおそらく最も面白い/挑発的な方法を指摘しています

0バイトのファイル:無効なコマンド/ファンキーな方法(互換性:不明)

*>EmptyFile.txt

アイデア:Andriy M

0バイトのファイル4番目に来る方法

break > file.txt

アイデア経由:foxidriveへの感謝のコメントダブルグラ


それはだtype nul ...、ではないtype <nul ...実際には、。
Andriy M 14

@AndriyMありがとうございます私は編集を行いました!おもしろいことに、間違ったものでも動作するので気づかなかった。つまり、ファイル名にリダイレクトされた無効なコマンドによって空のファイルが作成される可能性があります。試したところ、NonExistentCommand <nul >EmptyFile.txt
うまくいき

「無効」であると予想してハードコードされたコマンド名に依存するのは安全ではないため、ランダムなコマンド名オプションを追加しました
n611x007

2
さらにもう1つ:break > file.txt、小道具foxidrive
Gras Double

3
そして、ほとんどのコマンドは、>>「存在しなければならないが、存在している場合は切り捨ててはならない」(Unixのようにtouch)必要がある場合に使用できます
eckes

25

REM。> empty.file


私はWindows CEで立ち往生していますが、これがファイルを作成して空にする唯一の答えです!他のアプローチでは、空白行を追加するか、単に機能しません...
AntonyG

このソリューションの唯一の問題は、現在のディレクトリにREMと呼ばれるファイルがあり、と入力した場合REM.、cmdが「 'rem。」で応答することです。内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。」
DodgyCodeException 2018

@DodgyCodeException、rem/代わりにrem.を使用してその問題を解決します...
aschipfl

@aschipflありがとう、面白いですね。また、この2010年の回答には、コメントが数年離れている点も興味深いです。遅いwwww会話!
DodgyCodeException

8

書き込まれるファイルがすでに存在し、読み取り専用である可能性がある場合は、次のコードを使用します。

ATTRIB -R filename.ext
CD .>filename.ext

ファイルが存在しない場合は、単に次のようにします。

CD .>filename.ext

(DodgyCodeExceptionのコメントに従って更新/変更されたコード)

発生する可能性のあるエラーを抑制するには:

ATTRIB -R filename.ext>NUL
(CD .>filename.ext)2>NUL

1
このソリューションの唯一の問題CDは、現在のディレクトリに(拡張子なしの)というファイルがあり、CD.「」と入力すると、cmdが「CD」で応答することです。内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。」代わりにCD .(ドットの前にスペースを入れて)入力すると、機能します。
DodgyCodeException 2018


7

本に追加するもう1つ-短くてタイプするのが甘い。

break>file.txt
break>"file with spaces in name.txt"

引用符をスキップすると思います
Nam G VU

@NamGVUスペースや&などの長いファイル名要素を使用することを選択した場合、ターゲットファイル名で引用符が使用されます。引用符はファイルコンテンツの一部ではありません。
foxidrive 2015

ええ、私は同意します^^議論されているようにあなたを更新する許可。
Nam G VU

@NamGVU引用符は、長いファイル名の有無に関係なくそのまま残すことができます。コマンドラインから短いファイル名で入力した場合、不要な入力はしたくないと思います。
foxidrive 2015

この回答から2行目を削除することをお勧めします。IMOこれがこれまでの質問の最良の答えですが、2行目は、それを使用しようとする人がコマンドラインの空白処理の基本を知らない限り、実際に価値を追加しません。
kayleeFrye_onDeck 2018

2

TYPE代わりにコマンドを使用できますCOPY。これを試して:

TYPE File1.txt>File2.txt

どこFile1.txtが空です。


3
次のこともできますtype NUL>File2.txt
ダニーベケット

6
ところで、File1.txtを取得する方法は?
TomeeNS 2013年

1

を使用SETして、byte次のようにnull ファイルを作成することもできます。

set x=x > EmptyFile.txt

または、追加の変数を作成したくない場合は、次のように既存の変数を再割り当てします

set PROMPT=%PROMPT% > EmptyFile.txt

またはこのように:

set "PROMPT=%PROMPT%" > EmptyFile.txt

0

無限のアプローチがあります。

何も出力しないコマンド:

break
cls
color
goto
pushd
popd
prompt
title

奇妙なコマンド:

CD.
REM.
@echo off
cmd /c
START >FILE

古いprintコマンドは空のファイルを生成します:

print /d:EMPTY_TEXT_FILE nul

-2

最も簡単な方法は次のとおりです。

echo. > Filename.txt


8
これにより、空のファイルではなく、空白文字と改行文字が続く改行文字が続くファイルが作成されます。
Andriy M

エンコーディングを変更するので、以下の回答を見てみる価値があります。
Wolfpack'08

-3

重要:

エンコーディングを設定しないと、多くのソフトウェアが壊れる可能性があります。gitは非常に人気のある例です。

Set-Content "your_ignore_file.txt" .gitignore -Encoding utf8 これは大文字と小文字を区別し、utf8エンコーディングを強制します!


3
空のファイルを作成するためにエンコーディングはどのように関連していますか?nullバイトファイルはエンコーディングを必要とせず、BOM(0バイト)でマークするのは難しい
jeb

@jebは人々が空のファイルを埋めるため、そして埋められたファイルが設定ファイルとして使用される場合、それらがUTF8でない場合にエラーを作成します。実際、ほとんどの場合、ファイルは空のままにしないでください。他の方法を使用して、後で変更する予定の空のファイルを作成することはしません。 UTF8です。たとえば、githubの.gitチュートリアルでは、後で埋められる空のファイルを作成するようユーザーに要求し、他の方法では、奇妙なWindowsエンコーディングでファイルを作成します。
Wolfpack'08
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.