Удалите файл с именем "NUL" в Windows
Я запустил программу на Windows 7, которая была скомпилирована под Cygwin и передала "NUL" в качестве имени выходного файла. Вместо подавления вывода он фактически создал файл с именем "NUL" в текущем каталоге. (По-видимому, он ожидает "/dev/null" даже в Windows.) Теперь я застрял с этим "NUL" файлом, который я не могу удалить!
Я уже пробовал:
- Проводник Windows - ошибка: "Неверная функция MS-DOS" (да, это серьезно, что она говорит!)
- Командная строка с использованием "del NUL" - ошибка: "Имя файла, имя каталога или том
синтаксис ярлыков неверен. "
- Удаление всего каталога - то же самое дело, что и удаление файла
-
remove()
в программе C - также не работает
Как я могу избавиться от этих NUL файлов (у меня их уже несколько), за исключением установки полной среды Cygwin и компиляции C-программы под Cygwin?
Ответы
Ответ 1
Откройте командную строку и используйте эти команды для первого переименования, а затем удалите файл NUL:
C:\> rename \\.\C:\..\NUL. deletefile.txt
C:\> del deletefile.txt
Использование префикса \\.\
сообщает, что функции ввода/вывода файлов высокого уровня передают имя файла, не отсканированное в драйвере устройства, - таким образом вы можете получить доступ к другим недопустимым именам.
Прочитайте эту статью о действительных именах файлов/путей в Windows и различных зарезервированных именах.
Ответ 2
У меня была аналогичная проблема. Вероятно, это вызвало и Cygwin (так как я использую это регулярно), но с тех пор я забыл, как именно был создан файл.
Мне также не удалось удалить его. Я следил за советами некоторых других сообщений и пытался загрузиться в безопасный режим, чтобы удалить файл, хотя это ничего не делало. Совет от + xxbbcc тоже не работал у меня.
Однако я смог удалить файл с помощью терминала Cygwin! Создатели Кигвина и Кигвин разрушаются.
Ответ 3
Я решил это несколько иначе.
Я думал, что добавлю это здесь, потому что он высок в результатах Google, и у меня была аналогичная проблема для папки с именем NUL.
Я пробовал rmdir\\?\C:\My\Path\NUL
и rmdir\\.\C:\My\Path\NUL
без каких-либо успехов, а также попробовал несколько команд с помощью bash из моей установки SourceTree. Нет радости.
В конце я использовал DIR /X /A
из cmd для отображения коротких имен в родительском каталоге. Это показало мне NUL~1
для моей папки NUL и определило суть проблемы.
Затем это использовалось в стандартной команде rmdir /s NUL~1
и, наконец, разрешило проблему.
Ответ 4
Запустите npm удалите данные в командной строке. Он удалит nil.json и nil.topo.jdon. Эти два файла вызывают проблемы.
Ответ 5
Попробуйте написать небольшую программу на языке C, которая вызывает Windows API для удаления этого файла.
http://msdn.microsoft.com/en-us/library/aa363915%28v=vs.85%29.aspx
Если это не сработает, попробуйте открыть дескриптор файла с помощью CreateFile() с помощью FILE_FLAG_DELETE_ON_CLOSE, а затем закройте дескриптор.