Как я могу переименовать файл, имя которого само по себе является полным путем (например, начинается с «g: \»)? [Дубликат]

30

Случайно я создал файл с именем g:\filename.csvв Windows XP с помощью скрипта Python.

Обратите внимание, что g:\filename.csvэто имя файла. На самом деле он сохраняется на диске F :.

Я не могу переименовать его, используя командную строку ( ren oldfilename newfilename) или используя F2в окне проводника. Он говорит «не могу прочитать с диска» - Windows считает, что файл находится на диске G :.

Есть ли способ переименовать его?

Vineet
источник
делает *filename.csvработу?
BlueRaja - Дэнни Пфлюгофт
8
Кроме того, хотя у вас уже есть решение, не могли бы вы опубликовать код, который создал файл? Я не думал, что файловые API Windows даже позволили вам указать неверное имя файла ..
BlueRaja - Дэнни Пфлугхофт
5
Вы должны сообщить об ошибке в Linux / Ubuntu. Драйвер файловой системы должен знать, что это недопустимое имя файла для целевого диска, и, следовательно, не должен позволять создавать такой файл. Тем не менее, он должен разрешать обращение к таким файлам, если они уже существуют, чтобы удалить или переименовать их.
Devolus
2
На самом деле в этом имени файла нет ничего недопустимого в том, что касается NTFS, это просто ограничение Windows, которое препятствует правильной ссылке на него.
Фогг

Ответы:

21

Это не может быть самым быстрым решением, но оно должно работать.
Если вы загружаете Live Linux дистрибутив, вы можете удалить его, поскольку Linux использует другой метод для определения разделов, и вам не придется думать, что ваш файл - это диск. Я предлагаю вам Parted Magic , у которого есть много удобных инструментов для обслуживания дисков и систем, и, помимо вашей текущей заботы, всегда полезно иметь его под рукой.

Sekhemty
источник
1
У меня двойная загрузка с Ubuntu. Так что это можно легко попробовать. Позвольте мне попробовать и дать отзыв здесь. Спасибо.
Vineet
7
Выполнено. Из Ubuntu я удалил. файл. Спасибо.
Vineet
1
Раньше у меня был самый рейтинговый ответ, в котором было написано \\? \ Перед именем. Я был неправ, и этот метод не будет работать, поэтому я удалил свой ответ. Вам нужно использовать метод этого ответа или один из других ответов.
Скотт Чемберлен
7

Если ваша ОС Windows, то вы можете использовать следующий прием:

1. Issue command `dir /X`
2. Find out your file in 8 dot 3 notation
3. Use 8 dot 3 notation for file operations as ren, del, copy, print and others.

Обратите внимание: если вам удалось создать файл с именем conили каким-либо другим зарезервированным именем устройства Windows, то вам не повезло с таким подходом.

Дон цезарь д'Базар
источник
6

Вы также можете попробовать ...

Из Windows Command Prompt:

ren "F:???filename.csv" "filename.csv"

или

ren "F:*.csv" "filename.csv"
Кевин Феган
источник
4

Вы всегда можете попробовать Cygwin . Фильтр имени пути в нем должен быть более совместимым с этим типом ошибки, так как это не нарушает стандарты POSIX. Установите bash и fileutils, а затем попробуйтеrm /cygdrive/f/g:\\filename.csv

Рич Гомолка
источник