
たくさんのファイルをコピーしていたのですが、名前が長すぎるためコピーできないものもありました。名前を短くする簡単な方法はありますか? または、少なくともファイル名が長くなりすぎた場所へのパスを知ることはできますか?
編集: たくさんのファイルとは、それぞれにファイルを含む 2 つのディレクトリがあり、さらにディレクトリにさらに多くのファイルなどが含まれていることを意味します。Ctrl + C でコピーするだけです。
答え1
使用できますパススキャナ問題のあるファイルを見つけます。(一番下までスクロールして、Old Path Scanner を表示します)
答え2
私は提案しますロボコピー、に組み込まれていますWindows 7
。
robocopy <Source> <Destination> [<File>[ ...]] [<Options>]
答え3
コマンドラインソリューションで問題ない場合は、cp
私が同梱しているユーティリティを使ってハミルトンCシェルファイルを短くする必要もなく簡単にコピーできます。(完全開示:私は作者です。)他の基本的なファイルユーティリティと同様に、長い Unicode ファイル名内部的にはシステム制限である最大 32K 文字のパスの長さをサポートします。
もしこれが一度きりのことなら(そうでない場合でも)、必要なのは無料版問題が発生したり、希望どおりの動作を実現するためのサポートが必要な場合は、お知らせください。
答え4
この問題を解決するには、フルパスとファイル名が 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>
問題のあるファイルがわかったら、それらのファイル名を短く変更するか、そのパス内のフォルダーの 1 つの名前を変更するか、(可能であれば) ネットワーク ドライブをそのパス内のサブフォルダーにマップして、パスの長さを短くすることができます。