Страница: 1 |
Вопрос: Проблема с длинными путями файлов (255 символов) | Добавлено: 09.04.08 08:27 |
Автор вопроса: ![]() |
Не подскажете - куда копать?
Есть машина с Win Server 2003. Фактически используется как большая файлопомойка. Есть файлы с полной длиной больше 255 символов. Копироваться они ну никак не хотят. Вроде сообразил как обойти: нужно subst'ом подмонтировать часть папок, начиная с какого-то уровня вложенности. И так же подмонтировать каталог-получатель. Ручками - без проблем. А вот программно у меня что-то не получилось запустить subst на выполнение с параметрами. |
Ответы | Всего ответов: 5 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: ненавижу Вопросов: 40 Ответов: 477 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 09.04.08 08:32 |
Ты не пытался передать сабсту уже укороченные DOS-пути?
У рано встающих долго стоит ![]() |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: ненавижу Вопросов: 40 Ответов: 477 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 09.04.08 08:41 |
На VB это чтото типа
'обработка путей Private Declare Function apiGetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long Private Const MAX_PATH = 260 'проверка существования файла/папки Public Function FileExist(ByVal File As String) As Boolean Dim sRet As VbFileAttribute On Error Resume Next sRet = GetAttr(File) FileExist = Err.Number = 0 Err.Clear End Function 'получение DOS пути Private Function GetShortPath(ByVal Path As String) As String Dim tmpArr() As String Dim tmpInt As Integer Dim tmpStr As String 'если папка и/или файл существует If FileExist(Path) Then GetShortPath = Shorting(Path) 'иначе разделить всё на объекты и сократить существующую часть Else tmpArr = Split(Path, SL) For tmpInt = 0 To UBound(tmpArr) If tmpInt < UBound(tmpArr) Then tmpArr(tmpInt) = tmpArr(tmpInt) & SL If FileExist(GetShortPath & tmpArr(tmpInt)) Then tmpStr = Shorting(GetShortPath & tmpArr(tmpInt)) Else tmpStr = GetShortPath & tmpArr(tmpInt) End If GetShortPath = tmpStr Next End If End Function Private Function Shorting(ByVal Path As String) As String Shorting = String$(MAX_PATH, vbNullChar) Call apiGetShortPathName(Path, Shorting, MAX_PATH) Shorting = Left$(Shorting, InStr(Shorting, vbNullChar) - 1) End Function |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #3 | Добавлено: 12.04.08 18:22 |
Попробуй длинный путь указывать в ковычках. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 13.04.08 00:44 |
+1 |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 18 Ответов: 66 |
Профиль | Цитата | #5 | Добавлено: 14.04.08 17:37 |
Спасибо! Действительно - проблема в кавычках. В пути файла пробелы были. |
Страница: 1 |
|