Я копировал кучу файлов, но не смог скопировать некоторые, потому что там было слишком длинное имя. Есть ли простой способ сократить имена или я могу хотя бы знать путь к тому, где имя файла становится слишком длинным?

РЕДАКТИРОВАТЬ: под кучей файлов я имею в виду две директории, каждая из которых содержит файлы, и несколько директорий, содержащих больше файлов и т.д. Я просто копирую ctrl+c

5 ответов5

1

Вы можете использовать Path Scanner, чтобы найти оскорбительные файлы. (Прокрутите вниз до «Старого пути»).

1

Я бы предложил Robocopy, встроенный в Windows 7 .

robocopy <Source> <Destination> [<File>[ ...]] [<Options>]
0

Чтобы решить эту проблему, вам нужно найти файлы-нарушители, полный путь и имя файла которых превышают 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>

После того, как вы знаете проблемные файлы, вы можете либо переименовать их, чтобы они стали короче, переименовать одну из папок в этом пути или (возможно) сопоставить сетевой диск с подпапкой в этом пути, что уменьшит длину пути.

0

Если у вас все в порядке с решением для командной строки, утилита cp включенная в оболочку Hamilton C , легко скопирует ваши файлы без необходимости что-либо сокращать. (Полное раскрытие: я автор.) Как и остальные мои базовые файловые утилиты, он использует длинные внутренние имена файлов Unicode для поддержки длины пути до 32 КБ, системного ограничения.

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

0

Вы не говорите, какую ОС вы используете. Для Windows TeraCopy - отличная программа (бесплатная версия, идеально подходящая для большинства), которую я использую для копирования / перемещения файлов. В отличие от Windows, TeraCopy не будет полностью терпеть неудачу, когда сталкивается с проблемными файлами. Его можно использовать по мере необходимости или заменить функцию копирования Windows своей собственной. Вот реклама:

TeraCopy предназначен для копирования и перемещения файлов с максимально возможной скоростью. Он пропускает плохие файлы в процессе копирования, а затем отображает их в конце передачи, чтобы вы могли увидеть, какие из них требуют внимания. TeraCopy может автоматически проверять скопированные файлы на наличие ошибок, вычисляя значения контрольной суммы CRC. Он также предоставляет гораздо больше информации о копируемых файлах, чем его аналог Windows. TeraCopy интегрируется с контекстным меню Windows Explorer и может быть установлен в качестве обработчика копирования по умолчанию

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .