У меня есть файл, с которым возникают проблемы с моей ОС (Windows 2008 Server) / файловой системой (NTFS). Вот "каталог" каталога:
07/20/2009 11:28 AM <DIR> .
07/20/2009 11:28 AM <DIR> ..
07/20/2009 11:28 AM 9,425 when_it_initializes.cs
1 File(s) 9,425 bytes
2 Dir(s) 15,536,758,784 bytes free
Я запускаю командную строку «от имени администратора» и использую команду «more»:
more when_it_initializes.cs
Invalid parameter - when_it_initializes.cs
Точно так же, когда я запускаю "Блокнот" с файлом, я получаю
The system cannot find the path specified.
Файл был создан Team City, сервером непрерывной интеграции, на котором строится мой код. Что странно, так это то, что он также создает более 10 тысяч других файлов, которые у меня нет проблем с открытием, даже если они находятся в родственных папках.
Проверка владельца и свойства только для чтения выглядят нормально по сравнению с другими файлами, которые работают. Что странно, если я использую «проводник» для запуска «блокнота» и открываю его, он работает нормально. Я думаю, что может быть что-то в командной строке, что влияет на это, но я не знаю.
Что еще я могу проверить, чтобы понять, почему он не открывается?
Вы можете создать такой файл для тестирования, набрав следующее, а затем удерживая ALT и введите 255
на цифровой клавиатуре, затем отпустите ALT и нажмите ВОЙТИ. Это создаст имя файла со скрытым символом в конце.
echo.>when_it_initializes.cs
Однако я получаю следующее сообщение об ошибке:
more when_it_initializes.cs
Cannot access file c:\path\to\file\when_it_initializes.cs
Я могу удалить его:
del when*
Проблема заключается в общем пути и длине символа файла. Если я запускаю «переименовать» через командную строку, я получаю:
The filename or extension is too long.
Но если я затем переименую файл через проводник во что-то вроде «when.cs», затем вернусь в командную строку и запустите «блокнот» или «больше» или даже «переименовать», это сработает.
Похоже, что общая длина файла, включая каталог, составляет 250-260.
Это может быть проблема с именем родительского каталога (или его родителей).
Возможно проблема с диском, запустите CHKNTFS.
Это не должно быть проблемой файловой системы, так как вы можете открыть файл из проводника. Так что проблема должна быть в названии, как предложил Деннис. Попробуйте использовать подстановочные знаки оболочки, например del *.*
или type *.*
и проверьте вывод. Если подстановочные знаки работают, проблема, скорее всего, связана с использованием специального символа ASCII (или странного символа Unicode, если он поддерживается - я не уверен в этом).