Windows 文件 PathTooLongException:用于识别长度超过 255 的文件路径的批处理文件
Windows file PathTooLongException: Batch file to Identify filepaths longer than 255
问题
在我的 Windows 7 机器上进行文件同步操作期间,我有一些超过 length=255
的文件路径显然无法处理(并且似乎会中断整个操作)。遇到的异常是PathTooLongException
所需的解决方案:
我想创建一个 批处理文件 来识别超过 255 的文件路径,并将它们输出到 .txt
文件(用于诊断审查)
更新
下面接受的解决方案非常有效。
这是我第一次post来这里;请善待
您只需要路径(超过 255 个字符的目录路径)还是组合文件名和文件夹路径
仅文件夹:
@(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
问题
在我的 Windows 7 机器上进行文件同步操作期间,我有一些超过 length=255
的文件路径显然无法处理(并且似乎会中断整个操作)。遇到的异常是PathTooLongException
所需的解决方案:
我想创建一个 批处理文件 来识别超过 255 的文件路径,并将它们输出到 .txt
文件(用于诊断审查)
更新 下面接受的解决方案非常有效。
这是我第一次post来这里;请善待
您只需要路径(超过 255 个字符的目录路径)还是组合文件名和文件夹路径
仅文件夹:
@(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