Windowsには/ dev / nullがありますか?


414

/dev/nullWindowsでの同等の機能は何ですか?

回答:


489

私は、あなたがしたいと思うNUL少なくとも、コマンドプロンプトやバッチファイルの中に、。

例えば:

type c:\autoexec.bat > NUL

ファイルを作成しません。

(私は信じていますが、プログラムでファイルを作成しようと同じことが真であるが、私はそれを試していません。)

PowerShellでは、次のようにします$null

echo 1 > $null

20
@capthive:/dev/null.txtと/dev/null/foo.txtには違いがあります。
Jon Skeet、2010

2
私はこれをもう一度見ただけで、元のステートメントを撤回しました。私はコードで書き込みを行っていましたが、エラーが飲み込まれていました。私はそれを削除しているので、誰も誤ってそれを真実と見なしません。
Jim Hunziker、2010

3
:WindowsでUnixの「特別な」ファイルを探している人のためにここにいる/dev/random/dev/zeroWin32用のデバイスドライバ。
ulidtko 14

9
@CoDEmanX:それは私の経験ではありません。コンソール(またはファイル)への書き込みには、かなりの時間がかかる場合があります。「Hello there」を標準出力に10000000回書き込むプログラムでテストしました。SSD上のファイルへのリダイレクトには18秒かかりました。NULへのリダイレクトには4秒かかりました。リダイレクトしないことで、しばらくして忍耐力の欠如をあきらめました...
Jon Skeet

2
私は、あなたが特別なデバイス名の後にコロンを書く必要があることをWin95の時間の背中を学んだNUL:(とCON:PRN:...、)、それはその明確主にスタイルやショーの問題でありNUL:、特別なオブジェクトではなく呼ばれるファイルですNUL。また、特別なAPIを使用して、ファイルを呼び出すこともできますNUL(回答の1つを参照してください)。多分いつの日か、誰もが慣例でコロンを使用すれば、私たちは恐ろしい特別なデバイス名を廃止できると
夢見てい

65

GCCメーリングリストのこのメッセージによると、/ dev / nullの代わりに「nul」ファイルを使用できます。

#include <stdio.h>

int main ()
{
    FILE* outfile = fopen ("/dev/null", "w");
    if (outfile == NULL)
    {
        fputs ("could not open '/dev/null'", stderr);
    }
    outfile = fopen ("nul", "w");
    if (outfile == NULL)
    {
        fputs ("could not open 'nul'", stderr);
    }

    return 0;
}

(このコードはダニーのクレジットです。メッセージからコピーアンドペーストします。)

この特別な「nul」ファイルをリダイレクトで使用することもできます。


1
ああ、これが理由ですC:\dev。Windowsでディレクトリを作成し、多くのGNUユーティリティを使用すると、最終的にそのディレクトリにnullという不思議なファイルを取得することになります。
クリトスキリアク

50

NULWindowsでは実際には任意のフォルダの仮想パスのようです。のよう...、どのファイルシステムでも。

NULが続く任意のフォルダを使用すると機能します。

例、

echo 1 > nul
echo 1 > c:\nul
echo 1 > c:\users\nul
echo 1 > c:\windows\nul

/dev/nullLinux と同じ効果があります。

これはWindows 7、64ビットでテストされました。


7
Windows 7 64ビットで "nul"という名前のファイルを作成することはできません:)
David FerenczyRogožanSep

7
@DawidFerenczyそれは可能ですが、古典的な方法ではありません。例えばmd \\.\c:\nul quora.com/...gohacking.com/how-to-create-con-folder-in-windowssuperuser.com/questions/86999/...
phuclv

1
bashのWindows 10では、最初のファイルはファイルを作成しますnul
DrumM '28

win10でjavaを使用してIOExceptionをスローします。try catchでラップするだけです。/ dev / nullのように例外/エラーにならないことを望んでいた
MDuh

34

ジョン・スキートは正しいです。これは、Windows EmbeddedドキュメントのNulデバイスドライバーページです(他の場所にない理由はわかりません...)。

ここに別のものがあります:


69
もちろんジョン・スキートは正しいです。明白で普遍的な真実を述べていただきありがとうございます:)
R.マルティーニョフェルナンデス

1
ここの2つのリンクが壊れています。:(
マイケル・フカラキス

9

NULプログラム的にも機能します。たとえば、次のとおりです。

freopen("NUL", "w", stderr);

ファイルを作成しなくても期待どおりに動作します。(MSVC ++ 12.0)


1
で答える必要がある質問は非常に多くありNUL、それは5年前にその時点を過ぎていました。
miken32 2017

6
この答えは議論に有効な貢献をすると思います。
Jeroen 2017

3

Microsoft Windows /dev/nullでLinuxのシンボリックリンクと同等の機能を実行する必要がある場合は、管理者を開き、次のようcmdに入力します。

ファイルの場合:

mklink c:\path\to\file.ext NUL:

または、ディレクトリの場合:

mklink /D c:\path\to\dir NUL:

これにより、ファイル/ディレクトリが常に0バイトに維持され、すべての書き込み試行に成功が返されます。


-1

Windows PowerShellでこれを行うには、start$ NULを使用する必要があります。

mySumアプリケーションの名前であり、5 10送信するコマンドライン引数であると想定して、このコマンドを入力します。

start .\mySum  5 10 > $NUL 2>&1

startこのコマンドは、同様の効果を独立プロセスを開始します&。この/Bオプションは、実行中のプログラムがコンソールアプリケーションの場合、startが新しいターミナルウィンドウを開かないようにします。およびNULWindowsは、と同じです/dev/null2>&1最後には、すべてに行くであろう、stdoutに標準エラー出力をリダイレクトしますNUL


なぜ反対票?説明してください
HaSeeB MiR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.