Windows文件PathTooLongException:批处理文件以标识长度超过255的文件路径



问题我有一些超过length=255的文件路径,在我的Windows 7机器上执行文件同步操作时,显然无法处理这些文件路径(并且似乎会中断整个操作(。遇到的异常是PathTooLongException

所需解决方案:我想创建一个批处理文件,用于识别超过255的文件路径,并将其输出到.txt文件(用于诊断审查(

更新下面接受的解决方案非常有效。

这是我在这里的第一篇帖子;请友善

您只想要路径(超过255个字符的目录路径(还是组合filenamr和文件夹路径

仅文件夹:

@(Setlocal enabledelayedexpansion
Echo off
Set "_Root=D:"
Set "_ResultFile=D:PathsOver255Chars.txt"
)
CALL :Main
( Endlocal
Exit /B
)
:Main
For /F "Tokens=*" %%_ IN ('
Dir /B /S /AD "%_Root%*"
') DO (
SET "_CheckLen=%%_"
IF /I !_CheckLen! NEQ !_CheckLen:~-255! (
ECHO=%%_>>"%_ResultFile%"
)
)
GOTO :EOF

仅文件:

@(Setlocal enabledelayedexpansion
Echo off
Set "_Root=D:"
Set "_ResultFile=D:PathsOver255Chars.txt"
)
CALL :Main
( Endlocal
Exit /B
)
:Main
For /F "Tokens=*" %%_ IN ('
Dir /B /S /A-D-S-H "%_Root%*"
') DO (
SET "_CheckLen=%%_"
IF /I !_CheckLen! NEQ !_CheckLen:~-255! (
ECHO=%%_>>"%_ResultFile%"
)
)
GOTO :EOF

文件夹和文件

@(Setlocal enabledelayedexpansion
Echo off
Set "_Root=D:"
Set "_ResultFile=D:PathsOver255Chars.txt"
)
CALL :Main
( Endlocal
Exit /B
)
:Main
For /F "Tokens=*" %%_ IN ('
Dir /B /S  "%_Root%*"
') DO (
SET "_CheckLen=%%_"
IF /I !_CheckLen! NEQ !_CheckLen:~-255! (
ECHO=%%_>>"%_ResultFile%"
)
)
GOTO :EOF

最新更新