Как заставить Windows переименовать файл с помощью специального символа?

162913
codeLes

У меня есть песня, которую Windows не может воспроизвести, потому что в названии файла есть вопросительный знак.

"Where Have All the Cowboys Gone?.ogg" // as an example 

Поэтому я пытаюсь переименовать его, и Windows жалуется, пробую ли я его в Проводнике или из командной строки.

Ошибка при попытке скопировать, переименовать или переместить:

Неверный синтаксис имени файла, имени каталога или метки тома

Есть ли способ Windows переименовать в этом случае?

Обновить

Я буду следить за этим вопросом, но после 13 ответов и множества попыток (кроме сторонних решений) кажется, что Windows не может этого сделать (или, по крайней мере, мои окна не могут, никаких коротких имен). Поэтому я принимаю ответ, который в любом случае был моим первоначальным решением использования Linux. Было бы неплохо увидеть, как Windows справится с этим, так что не останавливайтесь только потому, что я принял этот ответ, вопрос все еще стоит!

80
Могу я спросить, как вы попали в это состояние? Windows обычно не позволяет вам сделать это. Michael Kohne 15 лет назад 5
и ответ таков: я получил файл из коробки с Linux. на самом деле это тоже файл .ogg. но мне было интересно, так как я на работе и у меня нет Linux, как это сделать в Windows ... было бы приятно узнать codeLes 15 лет назад 0
Вы можете открыть cmd.exe и показать вывод команды «dir» в этой папке? это может помочь увидеть, как Windows видит имя ... Atmocreations 15 лет назад 0
Использование DIR показывает файл с его именем, как я указал в вопросе ... codeLes 15 лет назад 0
Файловая система NTFS допускает некоторые символы, которых нет в Windows. Если Windows встречает такие файлы, это b0rks. Colonel Panic 12 лет назад 6
возможный дубликат [я назвал папку символом пробела, и теперь, когда я переключился на Windows, мне нужно переименовать ее] (http://superuser.com/questions/694881/i-named-a-folder- -символьный-для-пространства-и-теперь что-ив-коммутируемых над к победе) Ivan Chau 10 лет назад 0
Когда-то у меня вышел флэш-накопитель, chkdsk переместил файлы в другой сектор, но сохранил поврежденные имена, которые содержали забавные символы, такие как CRLF или даже backspace. :) Nulano 7 лет назад 1
@IvanChau: не дубликат. Этот другой вопрос касается пробела в имени, который, на самом деле, является куском пирога, в отличие от этого здесь (с подстановочным знаком). Sz. 6 лет назад 1

36 ответов на вопрос

42
salmonmoose

Захватите Linux-Live-CD и используйте это.

В любом случае, из дома я использую Linux ... и файл находится на переносном жестком диске, мне просто интересно, может ли Windows справиться с этим ... что-то вроде команды Windows Sudo или что-то в этом роде codeLes 15 лет назад 0
Это проблема с подстановочными знаками, а не проблема с разрешениями. В Linux практически все является допустимым символом в имени файла (включая разрывы строк) в Windows, есть набор зарезервированных символов, и нет эффективного способа избежать их. salmonmoose 15 лет назад 0
Убедитесь, что дистрибутив live CD имеет надежную поддержку NTFS. Я не уверен, как это происходит сейчас, но я помню, что это было немного глючит некоторое время назад. Josh Hunt 15 лет назад 0
Последние дистрибутивы Linux, такие как Ubuntu, успешно поддерживают самые важные функции NTFS. Atmocreations 15 лет назад 3
Ubuntu 9.04 абсолютно безупречна в поддержке NTFS, с одним или двумя неудобствами (например, если отключение питания и вы загружаетесь в Ubuntu, чтобы сэкономить время загрузки в течение нескольких секунд, вы не можете получить доступ к разделу Windows, пока не загрузитесь обратно в него) Phoshi 15 лет назад 1
Поддержка Linux NTFS отлично. Это лучше, чем Windows, например, Linux может удалять файлы с `:` в имени. Colonel Panic 12 лет назад 0
** Вам нужно перезагрузить Windows? ** Или вы можете запустить оба одновременно и все же успешно удалить файл со специальным символом? Pacerier 7 лет назад 0
@ Теоретически, вы можете это сделать, но это может означать, что вы монтируете накопитель одновременно в нескольких операционных системах, что, как правило, плохая идея. Завершите работу и загрузитесь в новой операционной системе. salmonmoose 7 лет назад 0
@Pacerier: должно быть возможно (и даже безопасно) смонтировать проблемный каталог с виртуальной машины, работающей на той же хост-системе. Случайный пример: https://www.howtogeek.com/187703/how-to-access-folders-on-your-host-machine-from-an-ubuntu-virtual-machine-in-virtualbox/ Sz. 6 лет назад 0
@Sz: Такое ощущение, что вы ожидаете многого от хост-ОС - это будет полагаться на то, что виртуальная машина будет делать вызовы хосту, с которым у хоста могут возникнуть проблемы - именно такое поведение приводит к такого рода проблемам на первом месте. Если вы не предлагаете смонтировать раздел и позволить клиенту выполнить работу, это кажется не очень хорошей идеей ^ TM salmonmoose 6 лет назад 0
29
GAThrawn

Вы пробовали использовать версию названия с короткими именами? Например

ren whereh~1.ogg where.ogg 

Если это единственный файл в текущей папке, начинающийся с первых нескольких букв, то используйте первые 6 букв имени (без пробелов), за которыми следует тильда (~), а затем 1.

Поскольку генерация коротких имен необязательна, в зависимости от того, как настроена Windows в настоящее время, Мерфи говорит, что в OP отключены короткие имена, а в файле их нет. Чтобы узнать короткое имя, если оно присутствует для какого-либо файла, используйте DIR / X, который добавит столбец с кратким именем для любого файла, если он отличается от длинного имени, если оно вообще есть. Если есть короткое имя, это будет правдоподобным ответом. RBerteig 15 лет назад 12
Вы действительно должны попробовать это ... Короткие имена файлов иногда могут быть полезны. alex 15 лет назад 0
нет коротких имен, попробовал ваш пример, а также dir / x доказывает, что в списке нет ни одного. codeLes 15 лет назад 4
23
Aubrey Island
  1. В Windows 7: запустите cmd.exe в режиме администратора.
  2. Перейдите в каталог с именами файлов.
  3. run: chkdsk / V / f [Мои испорченные файлы были на другом диске, отличном от диска ОС, поэтому он мог отключить его. Если это диск ОС, возможно, он должен выполнить этот этап при запуске.]
  4. Подождите (возможно, придется перезагрузить компьютер).

Как вы увидите, результатом было то, что chkdsk фактически удалил файлы для меня. Итак, если вы хотите сохранить файлы, я не знаю, что делать, но это наверняка избавит от файлов.

Результаты / Cmd Log:

E:\islag\Music\llb>dir Volume in drive E is FreeAgent Drive Volume Serial Number is 5038-892A  Directory of E:\islag\Music\llb  02/02/2011 12:18 PM <DIR> . 02/02/2011 12:18 PM <DIR> .. 04/04/2010 02:19 PM 4,014,099 01 Los Lonely Boys - Se?orita - www.file2 4ever.com.mp3 04/04/2010 02:18 PM 3,125,942 12 Los Lonely Boys - La Contestaci?n - ww w.file24ever.com.mp3 2 File(s) 7,140,041 bytes 2 Dir(s) 87,743,991,808 bytes free  E:\islag\Music\llb>chkdsk /V The type of the file system is NTFS. Volume label is FreeAgent Drive.  WARNING! F parameter not specified. Running CHKDSK in read-only mode.  CHKDSK is verifying files (stage 1 of 3)... 231424 file records processed. File verification completed. 34 large file records processed. 0 bad file records processed. 0 EA records processed. 0 reparse records processed. CHKDSK is verifying indexes (stage 2 of 3)... 18 percent complete. (29338 of 245164 index entries processed) An invalid filename 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 (3196 6) was found in directory 31962. All filenames for File 31966 are invalid. Minor file name errors were detected in file 31966. An invalid filename 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.mp 3 (31973) was found in directory 31962. All filenames for File 31973 are invalid. Minor file name errors were detected in file 31973. 73 percent complete. (233817 of 245164 index entries processed) Index entry 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 in index $I30 of file 31962 is incorrect. Index entry 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.mp3 in ind ex $I30 of file 31962 is incorrect. 245164 index entries processed. Index verification completed.  Errors found. CHKDSK cannot continue in read-only mode.  E:\islag\Music\llb>dir Volume in drive E is FreeAgent Drive Volume Serial Number is 5038-892A  Directory of E:\islag\Music\llb  02/02/2011 12:18 PM <DIR> . 02/02/2011 12:18 PM <DIR> .. 04/04/2010 02:19 PM 4,014,099 01 Los Lonely Boys - Se?orita - www.file2 4ever.com.mp3 04/04/2010 02:18 PM 3,125,942 12 Los Lonely Boys - La Contestaci?n - ww w.file24ever.com.mp3 2 File(s) 7,140,041 bytes 2 Dir(s) 87,743,991,808 bytes free  E:\islag\Music\llb>chkdsk /V /f The type of the file system is NTFS. Cannot lock current drive.  Chkdsk cannot run because the volume is in use by another process. Chkdsk may run if this volume is dismounted first. ALL OPENED HANDLES TO THIS VOLUME WOULD THEN BE INVALID. Would you like to force a dismount on this volume? (Y/N) y Volume dismounted. All opened handles to this volume are now invalid. Volume label is FreeAgent Drive.  CHKDSK is verifying files (stage 1 of 3)... 231424 file records processed. File verification completed. 32 large file records processed. 0 bad file records processed. 0 EA records processed. 0 reparse records processed. CHKDSK is verifying indexes (stage 2 of 3)... 18 percent complete. (29339 of 245164 index entries processed) Deleted invalid filename 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 (31966) in directory 31962. File 31966 has been orphaned since all its filenames were invalid Windows will recover the file in the orphan recovery phase. Correcting minor file name errors in file 31966. Deleted invalid filename 12 Los Lonely Boys - La Contestaci?n - www.file24ever.c om.mp3 (31973) in directory 31962. File 31973 has been orphaned since all its filenames were invalid Windows will recover the file in the orphan recovery phase. Correcting minor file name errors in file 31973. 73 percent complete. (233642 of 245164 index entries processed) Deleting index entry 01 Los Lonely Boys - Se?orita - www.file24ever.com.mp3 in i ndex $I30 of file 31962. Deleting index entry 12 Los Lonely Boys - La Contestaci?n - www.file24ever.com.m p3 in index $I30 of file 31962. 245164 index entries processed. Index verification completed. CHKDSK is scanning unindexed files for reconnect to their original directory. 2 unindexed files scanned. CHKDSK is recovering remaining unindexed files. 2 unindexed files recovered. CHKDSK is verifying security descriptors (stage 3 of 3)... 231424 file SDs/SIDs processed. Cleaning up 41 unused index entries from index $SII of file 9. Cleaning up 41 unused index entries from index $SDH of file 9. Cleaning up 41 unused security descriptors. Security descriptor verification completed. 6871 data files processed. CHKDSK is verifying Usn Journal... 1116928 USN bytes processed. Usn Journal verification completed. Correcting errors in the master file table's (MFT) BITMAP attribute. Windows has made corrections to the file system.  244196000 KB total disk space. 158175168 KB in 30003 files. 22820 KB in 6873 indexes. 0 KB in bad sectors. 306168 KB in use by the system. 65536 KB occupied by the log file. 85691844 KB available on disk.  4096 bytes in each allocation unit. 61049000 total allocation units on disk. 21422961 allocation units available on disk.  E:\islag\Music\llb>dir Volume in drive E is FreeAgent Drive Volume Serial Number is 5038-892A  Directory of E:\islag\Music\llb  02/02/2011 12:18 PM <DIR> . 02/02/2011 12:18 PM <DIR> .. 0 File(s) 0 bytes 2 Dir(s) 87,743,979,520 bytes free  E:\islag\Music\llb> 
Работал как шарм! Спасибо Oren S 10 лет назад 0
Работал отлично! Это должно быть ответом. enb081 9 лет назад 0
@ enb081 Нет, это не должен быть ответ, так как он не имеет никакого отношения к вопросу о том, как ** переименовать ** файлы. Sheesh. Jim Balter 7 лет назад 2
11
Joshua

Попробуйте указать путь UNC (см. Имена файлов, пути и пространства имен ). Это обходит все виды ограничений. Вы бы сделали это, используя \\?\синтаксис.

Например, если ваш файл был на вашем рабочем столе (а ваш диск Windows - C :), вы можете сделать

copy "\\?\C:\Users\codeLes\Desktop\Where Have All the Cowboys Gone?.ogg" "\\?\C:\Users\codeLes\Desktop\Where Have All the Cowboys Gone.ogg" 

Примечание: Вы не можете использовать относительные пути с этим синтаксисом; Вы должны указать полный путь. И это не работает с renкомандой, но работает с copyи move.

попробовал, а не удачу "Неверный синтаксис имени файла, имени каталога или метки тома". Спасибо! Я подхожу к тому, что думаю, что правильный ответ - использовать Linux для его переименования (что я и сделал). codeLes 15 лет назад 4
Этот ответ определенно неправильный. Ограничение на допустимые символы в драйвере NTFS в ядре Windows. `` \\? \ `` просто обходит обработку пути к файлу в библиотеке времени выполнения пользовательского режима. Он не позволяет открывать имена файлов, которые содержат 5 подстановочных знаков (*? "<>), Другие зарезервированные символы (/ |: \) или управляющие символы. eryksun 7 лет назад 0
Это работает в моем случае: у меня было имя файла с символом Unicode внутри и с завершающим `\ n`. Не спрашивайте меня, как я его создал (ну, я пытаюсь понять, можете ли вы создать несколько файлов с одинаковым именем в Windows). Explorer, FreeCommander не может удалить его, но `\\? \ C: \ ...` может. Dio Phung 7 лет назад 0
10
gohop

chkdskиногда исправит неправильные имена файлов. Вы получите сообщение об удалении файла, поскольку все имена файлов недействительны, а затем восстановите утерянный файл. Затем вы можете найти файл в C:\found.000\file0000.chk. Это эффективный способ удаления проблемных файлов, но не лучший способ сохранить их.

9
anon

The way i deleted the stubborn file was by opening 7zip, finding the file and renaming the file through 7zip. Mine was a song which had a space at the end of the file.

Вы имеете в виду, что сам файл даже не был в архиве, но вы просто использовали 7-Zip, чтобы переименовать его в файловой системе? Умный. Arjan 10 лет назад 0
Это прекрасно работает. Я попробовал несколько других вариантов здесь, и это был первый, который работал. rakensi 10 лет назад 0
7zip смог переименовать ваш файл, потому что имена файлов, заканчивающиеся пробелами, не являются проблемой в Windows. Имена файлов, содержащие '?' являются проблемой, и 7zip не может их переименовать. Jim Balter 7 лет назад 1
НЕПРАВИЛЬНЫЙ ОТВЕТ ! user2284570 7 лет назад 0
Это прекрасно сработало для меня, потому что моя проблема оказалась не в вопросительных знаках, а в странных символах Юникода, которые просто отображались в виде вопросительных знаков в моем файловом менеджере. Импортировав файлы (их было сотни) в архив 7-Zip, а затем снова экспортировав, 7-Zip просто преобразовал плохие символы в подчеркивание (_). Затем я снова смог работать с файлами. Проблема полностью решена. Спасибо за отличный совет! Jesper 7 лет назад 0
Я не могу переименовать файлы с помощью символа ":": https://i.imgur.com/dZBqqeP.png user598527 7 лет назад 0
7zip работает с файлами, которые заканчиваются пробелом, в то время как Windows Explorer (и даже простой вызов API переименования файлов!) Этого не делают. Marco van de Voort 6 лет назад 0
7
Jan Lachnitt

Use Recuva. It is primarily intended for recovering deleted files but it also has an option for including non-deleted files in its scan.

After launching Recuva, refuse the wizard and select the right disk. Then go to Options, find and check the option "scan for non-deleted files" and launch the scan. After a while, it will show all the files on the disk (whether deleted or not). Find your files with invalid names (the names are already fixed in the view), select them, right click and save ("recover") somewhere.

enter image description here

I have just done it (on Windows XP).

5
braveterry

Попробуйте использовать сторонний инструмент, такой как инструмент Ken Rename :

Скриншот Кена Переименования

или переименовать мастера .

Вот список инструментов переименования файлов .

Я бы сам их протестировал, но у меня 64-битная Windows Vista; обработка файлов может отличаться.

Если эти инструменты не работают, вы можете попробовать Windows PowerShell . См. Переименование файлов в блоге Windows PowerShell .

не пробовал сторонний инструмент. codeLes 15 лет назад 0
Я попробовал Directory Opus, и он не работал (то же сообщение об ошибке). user14068 14 лет назад 0
Я попробовал Flexible Renamer 8.4, который, кажется, добился цели. Источник с того же сайта, который вы упомянули. JohnnyBizzle 9 лет назад 0
5
user14068

Инструмент Microsoft DISKEDIT.EXE - это низкоуровневый инструмент для непосредственного чтения и записи необработанных данных на диске. Вы должны быть в состоянии загрузить кластер, содержащий запись каталога для этого файла, и просто изменить ошибочный '?' персонаж к чему-то безобидному и запишите его обратно на диск.

Насколько я понимаю, средство Microsoft diskedit (не одноименное средство Norton Utilities, предназначенное только для томов FAT) в последний раз использовалось в Windows 2000 SP4. Но есть ссылка на него, которую можно найти здесь .

Чтобы найти нужный кластер, вы можете загрузить пробную версию DiskExplorer для NTFS .

Вы должны начать с File-> Drive ..., чтобы открыть диск, содержащий этот плохой файл. Выберите Goto-> Root Directory, чтобы получить представление каталога. Перейдите в каталог, содержащий ваш плохой файл, используя ссылки MFT #. Когда вы попадете туда, в верхней части окна появится что-то вроде: «MFT # x12345 DIR:« dirname », ... бла-бла-бла ... начиная с кластера x9302AE, ... бла-бла-бла"

Теперь перейдите к Microsoft diskedit. Сначала выполните File-> Open ... и укажите имя тома C: (если файл находится на вашем диске C:). Оставьте имя файла тома пустым. Возьмите этот начальный номер кластера и введите его в diskedit в разделе Read-> NTFS Clusters ...-> Starting Cluster (введите его как шестнадцатеричное число).

Теперь используйте клавиши со стрелками для прокрутки вниз к неправильному имени файла. Он в юникоде, так что вы будете искать что-то вроде «Где. У вас есть. Все. Ковбои. Ушли? ... ogg» Наведите курсор на плохой символ «3F» и введите что-нибудь безопасное, например, 5F (' _ '). Выберите Write-> It, чтобы записать его обратно на диск.

Есть еще одно место для удара (не уверен, что нужно одно или оба). Теперь, вернувшись в DiskExplorer, нажмите на Mft # для плохого файла. Вы увидите экран с изображением дерева слева, на котором написано «структуры». Нажмите на «Атрибуты» в дереве. Он покажет вам список атрибутов, одним из которых будет что-то вроде $ 30 ... $ FILE_NAME. Итак, 30 долларов имеют имя файла. Нажмите на узел Body под узлом $ 30 в дереве структур. Выберите меню View-> как Hex. Несколько строк вниз, вы должны увидеть имя файла снова. Где. У вас есть ... и т.д. В левой части экрана вы увидите столбец Sector, который показывает, на какой сектор диска вы смотрите.

Вернемся к дискотеки. Сделайте Read-> Sectors ... и введите номер сектора из DiskExplorer. Как и раньше, прокрутите вниз и замените символ «3F» тем же символом, что и выше. Выберите Write-> It, чтобы записать его на диск.

Я сделал все это, и инструменты говорят мне, что я изменил характер, но исследователь не делает. Каталог должен быть где-то кэширован. После перезагрузки изменение становится видимым.

+1 за правильный (но более или менее непрактичный) подход, надеясь, что он немного лопнет и обгонит хотя бы некоторые из неправильных ответов. ;) Sz. 6 лет назад 0
4
Tom Kidd

Вы пытались переместить его в файл с правильным именем?

move "Where Have All the Cowboys Gone?.mp3" "Where Have All the Cowboys Gone.mp3" 
попробовал, не повезло. «Неверный синтаксис имени файла, имени каталога или метки тома» codeLes 15 лет назад 1
У меня это сработало с командой `copy`. Nicolas 11 лет назад 0
@ Николас, ты имеешь в виду, что в названии было `?` Или `*` или `<` или `>` или `:`, а `copy`-ing просто работал? (Я просто попробовал, и это не для меня, что неудивительно.) Sz. 6 лет назад 0
@Sz. жаль слышать, что это не сработало для вас. Я не помню имя файла, которое мне пришлось переименовать, но оно работало для меня с командой `copy`. Вы также пробовали `cygwin` и команду bash` mv`? Nicolas 6 лет назад 0
@ Николас, спасибо за попытку помочь, но я хочу сказать, что те символы, которые я перечислил выше (и некоторые другие, такие как `" `,` | `,` / `, и, конечно, обратный слеш (который мне не кажется чтобы войти сюда :))) находятся в другом классе проблемных символов ([зарезервировано] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v%3Dvs.85%29. aspx # file_and_directory_names)) и, боюсь, ни команда `copy`, ни` Cygwin` не могут обойтись без их переименования. (Скорее всего, у вас было несколько разных символов в вашем проблемном имени файла.) Sz. 6 лет назад 0