75

我在 Windows 7 上运行了一个在 Cygwin 下编译的程序,并将“NUL”作为输出文件名传递。它实际上在当前目录中创建了一个名为“NUL”的文件,而不是抑制输出。(显然它需要“/dev/null”,即使在 Windows 上也是如此。)现在我被这个无法删除的“NUL”文件所困扰!

我已经尝试过:

  • Windows 资源管理器 - 错误:“无效的 MS-DOS 功能”(是的,这就是它所说的!)
  • 使用“del NUL”的命令提示符 - 错误:“文件名、目录名或卷标语法不正确。”
  • 删除整个目录 - 与删除文件相同
  • remove()在 C 程序中 - 也失败了

我怎样才能摆脱这些 NUL 文件(我现在有几个),没有安装完整的 Cygwin 环境并在 Cygwin 下编译一个 C 程序来做到这一点?

4

7 回答 7

170

打开命令提示符并使用这些命令首先重命名然后删除 NUL 文件:

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

使用\\.\前缀告诉高级文件 I/O 函数将未解析的文件名传递给设备驱动程序 - 这样您就可以访问其他无效名称。

阅读这篇文章,了解 Windows 中的有效文件/路径名称以及各种保留名称。

于 2013-07-26T14:19:47.517 回答
30

如果您安装了适用于 Windows 的 Git (v2.18),请执行以下操作

  1. 打开包含要删除的文件的目录
  2. 左键单击并选择Git Bash Here
  3. 在命令提示符下键入rm nul.json并按 ENTER,现在应该删除该文件。

在这里运行 Git Bash

注意:这些屏幕截图显示了文件的删除,nul.topo.json这是我无法通过简单删除删除的另一个文件。

命令执行后

于 2018-08-15T15:29:31.590 回答
3

我有一个类似的问题。它也可能是由 Cygwin 引起的(因为我经常使用它),但我已经忘记了该文件是如何创建的。

我也很难删除它。我遵循了其他一些帖子的建议并尝试启动到安全模式以删除文件,尽管这没有任何作用。+xxbbcc 的提示对我也不起作用。

但是,我能够使用 Cygwin 终端删除该文件!Cygwin 创造,Cygwin 毁灭。

于 2014-05-16T23:27:20.547 回答
2

如果您在 Windows 上有 git,只需右键单击包含 nul 文件的文件夹 -> 在此处转到 gitbash -> 并根据文件类型键入“rm nul”或“rm nul.json”。

于 2021-07-10T18:22:57.553 回答
2

要删除位于此处的 nul 文件:C:\unix\cygwin\dev\nul

我只是使用(仅在 Windows 10 上测试):Del \?\C:\unix\cygwin\dev\NUL

于 2018-04-02T11:15:58.860 回答
1

我以稍微不同的方式解决了这个问题。

我想我会在这里添加它,因为它在谷歌结果中很高,而且我对一个名为 NUL的文件夹也有类似的问题。

我尝试过rmdir\\?\C:\My\Path\NULrmdir\\.\C:\My\Path\NUL没有成功,还尝试了使用我的 SourceTree 安装中的 bash 的几个命令。没有喜悦。

最后,我使用DIR /X /Afrom cmd 列出了父目录中的短名称。这向我展示NUL~1了我的 NUL 文件夹并确定了问题的症结所在。

然后在标准命令中使用它rmdir /s NUL~1并最终解决了这个问题。

于 2017-01-24T05:04:49.390 回答
-2

尝试编写一个简短的 C 程序,调用 Windows API 来删除该文件。

http://msdn.microsoft.com/en-us/library/aa363915%28v=vs.85%29.aspx

如果这不起作用,请尝试使用带有 FILE_FLAG_DELETE_ON_CLOSE 的 CreateFile() 打开文件的句柄,然后关闭句柄。

于 2013-07-26T14:14:47.867 回答