Почему я получаю сообщение об ошибке «Путь не найден»?

Я получаю путь, не найденный во второй строке (fso.CopyFile).

FullFileLocationFrom = (see below)
ActualDBFileName = (see below)  
NoNameFileLocationTo = GetDocumentRoot & "\temp\" & TempFileGUID
FullFileLocationTo = NoNameFileLocationTo & "\" & ActualDBFileName

If Not fso.FolderExists (NoNameFileLocationTo) Then 
    CreateFolderPath NoNameFileLocationTo
End If

If fso.FileExists (FullFileLocationFrom) Then
    fso.CopyFile FullFileLocationFrom, FullFileLocationTo, True 'This line gives PathNotFound error
End If

Это значение ActualDBFileName:

Исходный - Редизайн - С перегородкой - Очистить результаты - Перегруппировать - Зарегистрированные комнаты - Изменить размер окна G-R2 (улица Аркола, E7 - 3)_ROL - TEST.xls

Это значение FullFileLocationFrom:

E:\Hello\Work\P\Pavledes\Court REVIEW - ROL - 15-21 & 27 Arcola St\MODEL\Osignal - Редизайн - С перегородкой - Очистить результаты - Перегруппировать - Зарегистрированные комнаты - Изменить размер окна G-R2 (Arcola Улица, Е7 - 3)_ROL - TEST.xls

Это значение FullFileLocationTo:

E:\inetpub\vhosts\HEllo.com\subdomains\admin\httpdocs\Documents\temp{0ABF2698-6F8B-4A73-9E5A-D6FD9E9E0708}\Origal - Редизайн - С разделом - Очистить результаты - Перегруппировать - Зарегистрированные комнаты - Изменить G -R2 Размер окна (улица Аркола, E7 - 3)_ROL - TEST.xls

Я просмотрел разные вопросы о стеке и на разных форумах, но ни одно решение еще не решило мою проблему.


person ravp    schedule 05.08.2016    source источник
comment
Что ImportInfo() это подфункция ?? а где он в этом скрипте??   -  person Hackoo    schedule 05.08.2016
comment
Это набор записей, но я отредактировал фрагмент для ясности.   -  person ravp    schedule 05.08.2016
comment
Ни одно из этих имен файлов недопустимо. Имена файлов не могут содержать >, а у вас все три. (Я не говорю о том, что в конце нерелевантной подсказки в начале; я говорю о том, что в Комнатах › зарегистрированных и Результатах › - Re Group.   -  person Ken White    schedule 05.08.2016
comment
@KenWhite извините, это, должно быть, было вставлено случайно, когда я форматировал текст для stackoverflow. Файл действительно существует: когда я копирую и вставляю FullFileLocationFrom в проводнике Windows, он правильно переносит меня в этот файл.   -  person ravp    schedule 05.08.2016
comment
Я не понимаю, как это может быть. Это незаконное имя файла. См. соглашения об именах. , что ясно говорит о том, что > не является допустимым символом в имени файла в файловой системе Windows (FAT16, FAT32 или NTFS), а также еще полдюжины или около того символов. > является оператором перенаправления со времен старых DOS, и до сих пор им не допускается в именах файлов.   -  person Ken White    schedule 05.08.2016
comment
@KenWhite кажется, что вы печатали свой комментарий, когда я редактировал свой. В имени файла нет ›. Я думаю, что удалил их все, но если они появятся, это результат моей неудачной попытки отформатировать текст для stackoverflow.   -  person ravp    schedule 05.08.2016
comment
Я остановился, когда писал, чтобы найти URL. Однако я не уверен, как форматирование текста для SO привело к трехкратной вставке недопустимых символов в имена файлов. :-) Здесь важно правильно указать детали; к счастью, я потратил свое время на пару комментариев, но кто-то зря потратил свое время на написание и форматирование ответа. Вероятно, вам следует извиниться перед ними в дополнение к комментарию, который вы там оставили.   -  person Ken White    schedule 05.08.2016
comment
Я впервые использую блочные кавычки :( Инструкции неясны: › Создайте блочную цитату, добавив «›» к каждой строке. Что я и сделал. Я не заметил ошибки. Извините, если я потратил здесь чье-то время. :(   -  person ravp    schedule 05.08.2016


Ответы (3)


Ошибка возникает из-за FullFileLocationTo: имя пути составляет 268 символов, но ограничение Windows API составляет 260 символов, что вызывает исключение «Путь не найден», поскольку невозможно создать указанный путь.

person ravp    schedule 05.08.2016

  • Не используйте следующие символы в именах каталогов или файлов, поскольку они зарезервированы:

< > : " / \ |

Из https://msdn.microsoft.com/en-au/library/windows/desktop/aa365247(v=vs.85).aspx

Это правила окна, т.е. правила, которым следуют оконные программы. Базовая файловая система может хранить любые символы, необходимые для поддержки любой ОС. Но функции Windows сходят с ума, если правила окна не соблюдаются.

Иногда вы можете добавить к имени файла префикс \\.\ (\\.\C:\autoexec.bat). Если программа просто передает его функциям Windows API, она отключит проверку имени файла.

person s34    schedule 05.08.2016
comment
Однако я не использую ни один из этих символов в имени файла. - person ravp; 05.08.2016

Я думаю, что @ravp прав. Это известное ограничение в Windows:

Полное имя файла должно быть меньше 260 символов, а имя каталога должно быть меньше 248 символов.

Также обратите внимание на это: без ошибок?forum=ITCG" rel="nofollow">https://social.technet.microsoft.com/Forums/scriptcenter/en-US/266e0699-ea5b-4dee-8c96-30d021709772/filesystemobject-and- длинные имена-без-ошибок-показаны?forum=ITCG

person some1    schedule 05.08.2016