En una partición NTFS, la longitud máxima de la ruta es de aproximadamente 32,760 caracteres (algo menos de 32,767). Pero, MAX-PATH sigue siendo 260. Las rutas más largas que "MAX-PATH" todavía son accesibles y se conocen como "ruta de longitud extendida".
Según esta página: Limitación máxima de la longitud del camino
Para especificar una ruta de longitud extendida, use el prefijo "\\? \". Por ejemplo, "\\? \ D: \ ruta muy larga".
También tenga en cuenta que una "ruta de longitud extendida" es siempre una ruta "absoluta". No puede especificar una "forma relativa" de una "ruta de longitud extendida".
No he intentado ejecutar su script exacto, pero he hecho algunas pruebas desde el símbolo del sistema y parece que es viable.
Por ejemplo:
@for /f "usebackq delims=" %f in (`dir /s /b "\\?\c:\Blah"`) do @echo %f
Devuelve una lista como:
\\?\c:\Blah\test
\\?\c:\Blah\test\aaa
\\?\c:\Blah\test\bbb
\\?\c:\Blah\test\aaa\folder1
\\?\c:\Blah\test\aaa\folder2
\\?\c:\Blah\test\aaa\folder1\File1.txt
\\?\c:\Blah\test\aaa\folder1\File2.txt
\\?\c:\Blah\test\aaa\folder2\File1.txt
\\?\c:\Blah\test\aaa\folder2\File2.txt
\\?\c:\Blah\test\bbb\folder1
\\?\c:\Blah\test\bbb\folder2
\\?\c:\Blah\test\bbb\folder1\Diff.txt
\\?\c:\Blah\test\bbb\folder1\Same.txt
\\?\c:\Blah\test\bbb\folder2\Diff.txt
\\?\c:\Blah\test\bbb\folder2\Same.txt
Y:
C:>dir /-c /a /w /s /x "\\?\c:\Blah" | findstr /b /c:" "
Devoluciones:
0 File(s) 0 bytes
0 File(s) 0 bytes
2 File(s) 660 bytes
2 File(s) 654 bytes
0 File(s) 0 bytes
2 File(s) 654 bytes
2 File(s) 660 bytes
Total Files Listed:
8 File(s) 2628 bytes
20 Dir(s) 3268722688 bytes free
Lo cual no parece ser exactamente lo que necesita, por lo que su comando "dir / Findstr" necesitará algún ajuste.
No tengo ninguna ruta \ archivos que tengan más de 260 caracteres, por lo que no puedo decir qué sucede con las rutas "muy largas", pero debería funcionar.
Si la ruta que está utilizando es una ruta UNC, la página vinculada anteriormente dice esto:
El prefijo "\\? \" También se puede usar con rutas construidas de acuerdo con la convención de nomenclatura universal (UNC). Para especificar dicha ruta usando UNC, use el prefijo "\\? \ UNC \". Por ejemplo,
"\\? \ UNC \ server \ share", donde "server" es el nombre de la computadora y "share" es el nombre de la carpeta compartida. Estos prefijos no se utilizan como parte de la ruta en sí.
Un ejemplo que se ajuste a la ruta UNC que proporcionó en su comentario, debe especificarse así:
dir /-c /a /w /s /x "\\?\UNC\10.0.0.10\folder1\folder2" | findstr /b /c:" "