web-dev-qa-db-ja.com

Windowsで「NUL」という名前のファイルを削除する

CygwinでコンパイルされたWindows 7でプログラムを実行し、出力ファイル名として「NUL」を渡しました。出力を抑制する代わりに、実際には現在のディレクトリに「NUL」という名前のファイルを作成しました。 (どうやら、Windowsでも "/ dev/null"を期待しています。)削除できない "NUL"ファイルに悩まされています!

私はすでに試しました:

  • Windowsエクスプローラ-エラー:「無効なMS-DOS関数」(はい、それは真剣に言っていることです!)
  • 「del NUL」を使用したコマンドプロンプト-エラー:「ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。」
  • ディレクトリ全体の削除-ファイルを削除するのと同じこと
  • Cプログラムのremove()-失敗します

完全なCygwin環境をインストールし、CygwinでCプログラムをコンパイルしてそれを実行するのに十分でない場合、これらのNULファイル(現在、いくつかのファイルを持っています)を取り除くにはどうすればよいですか?

50
EM0

コマンドプロンプトを開き、次のコマンドを使用して、最初にNULファイルの名前を変更してから削除します。

C:\> rename \\.\C:\..\NUL. deletefile.txt
C:\> del deletefile.txt

\\.\接頭辞を使用すると、高レベルのファイルI/O関数に、解析されていないファイル名をデバイスドライバーに渡すように指示します。これにより、無効な名前にアクセスできます。

Windowsでの有効なファイル/パス名とさまざまな予約名について この記事 をお読みください。

101
xxbbcc

Git for Windowsがインストールされている場合(v2.18)、次の手順を実行します

  1. 削除するファイルを含むディレクトリを開きます
  2. 左クリックしてGit Bash Hereを選択します
  3. コマンドプロンプトでrm nul.jsonと入力してEnterキーを押すと、ファイルが削除されます。

run Git Bash Here

注:これらのスクリーンショットは、ファイルnul.topo.jsonの削除を示しています。これは、単純な削除では削除できなかった別のファイルです。

after command execution

6

同様の問題がありました。これはおそらくCygwinによっても引き起こされたものです(これを定期的に使用しているため)。

私もそれを削除するのに苦労しました。他の投稿のアドバイスに従い、セーフモードで起動してファイルを削除しようとしましたが、何も起こりませんでした。 + xxbbccからのヒントも私にとってはうまくいきませんでした。

しかし、Cygwinターミナルを使用してファイルを削除することができました! Cygwin createthおよびCygwin destroyeth。

3
Benmj

ここにあるnulファイルを削除するには:C:\ unix\cygwin\dev\nul

私は単に使用します(Windows 10でのみテスト済み):Del \?\ C:\ unix\cygwin\dev\NUL

2
Olivier

私はこれを少し異なる方法で解決しました。

これはグーグルの結果の上位にあり、NULという名前のfolderでも同様の問題があったため、ここに追加すると思いました。

私はrmdir\\?\C:\My\Path\NULrmdir\\.\C:\My\Path\NULを試しましたが、成功しませんでした。また、SourceTreeインストールからbashを使用していくつかのコマンドを試しました。喜びがない。

最後に、cmdからDIR /X /Aを使用して、親ディレクトリの短い名前をリストしました。これにより、NULフォルダのNUL~1が示され、問題の核心が特定されました。

これは標準コマンドrmdir /s NUL~1で使用され、最終的に問題が解決されました。

0
spryce