Чтобы решить эту проблему, вам нужно найти файлы-нарушители, полный путь и имя файла которых превышают 255 символов. Поскольку нахождение длины в командном файле - это немного собачий обед, я использую следующий VBScript.
Сохраните приведенный ниже код в файл с именем longpaths.vbs
. Запустите его из командной строки DOS со следующим cscript longpaths.vbs <path> <length>
где <path>
- это местоположение папки (не забудьте заключить ее в кавычки, если у вас есть пробел) и <length>
это длина пути, выше которой он должен быть помечен.
Код выглядит следующим образом:
Option Explicit
If WScript.Arguments.Count <> 2 Then
WScript.Echo "Usage: " & WScript.ScriptName & " <path> <max length>"
WScript.Quit
End If
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(WScript.Arguments(0)) = False Then
WScript.Echo WScript.Arguments(0) & " - Invalid path or no such folder."
WScript.Quit
End If
Dim oFolder : Set oFolder = fso.GetFolder(WScript.Arguments(0))
Dim iLength : iLength = CInt(WScript.Arguments(1))
Dim iCount : iCount = 0
WScript.Echo "Looking for paths longer than " & iLength & " characters in " & oFolder.Path
On Error Resume Next
Call ScanFolder(oFolder)
On Error Goto 0
WScript.Echo "Found " & iCount & "."
WScript.Quit
Sub ScanFolder(oScanFolder)
Dim oFile : For Each oFile in oScanFolder.Files
If Len(oFile.Path) > iLength Then
WScript.Echo oFile.Path
iCount = iCount + 1
End If
Next
For Each oFile in oScanFolder.SubFolders
Call ScanFolder(oFile)
Next
End Sub
Пример использования и вывод:
D:\Development>cscript longpath.vbs c:\Windows 210
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
Looking for paths longer than 210 characters in C:\Windows
C:\Windows\assembly\GAC_MSIL\Microsoft.Security.ApplicationId.Wizards.AutomaticRuleGenerationWizard.resources\6.1.0.0_en_31bf3856ad364e35\Microsoft.Security.ApplicationId.Wizards.AutomaticRuleGenerationWizard.resources.dll
Found 1.
D:\Development>
После того, как вы знаете проблемные файлы, вы можете либо переименовать их, чтобы они стали короче, переименовать одну из папок в этом пути или (возможно) сопоставить сетевой диск с подпапкой в этом пути, что уменьшит длину пути.