0

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

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

更新 下面接受的解决方案完美运行。

这是我第一次发帖; 请善待

4

1 回答 1

1

您只想要路径(超过 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

于 2020-11-10T13:51:28.897 回答