在Windows上删除名为“NUL”的文件

时间:2013-07-26 14:05:05

标签: c windows null cygwin

我在Windows 7上运行了一个程序,该程序是在Cygwin下编译并通过" NUL"作为输出文件名。它实际上创建了一个名为" NUL"的文件,而不是抑制输出。在当前目录中。 (显然它预计" / dev / null",甚至在Windows上。)现在我已经坚持了这个" NUL"我无法删除的文件!

我已经尝试过了:

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

如何摆脱这些NUL文件(我现在有几个),没有安装完整的Cygwin环境并在Cygwin下编译C程序来完成它?

7 个答案:

答案 0 :(得分:96)

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

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

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

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

答案 1 :(得分:6)

如果已安装Windows Git(v2.18),请执行以下操作

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

run Git Bash Here

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

after command execution

答案 2 :(得分:3)

我有类似的问题。它可能也是由Cygwin引起的(因为我经常使用它),但我已经忘记了文件的确切创建方式。

我也无法删除它。我按照其他一些帖子的建议,尝试启动到安全模式删除文件,虽然这没有做任何事情。来自+ xxbbcc的提示对我来说也不起作用。

但是,我能够使用Cygwin终端删除文件! Cygwin createth和Cygwin毁灭。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

我认为我会在此处添加此内容,因为它在google结果中很高,而且我对名为NUL的文件夹也有类似的问题。

我尝试了rmdir\\?\C:\My\Path\NULrmdir\\.\C:\My\Path\NUL但没有取得任何成功,还尝试使用我的SourceTree安装中的bash命令。没有快乐。

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

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

答案 6 :(得分:-2)

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

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

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