Em uma partição NTFS, o comprimento máximo do caminho é de aproximadamente 32.760 caracteres (algo um pouco menor que 32.767). Mas, MAX-PATH ainda é 260. Caminhos mais longos que "MAX-PATH" ainda são acessíveis e são chamados de "caminho de extensão estendida".
De acordo com esta página: Comprimento máximo do caminho Limitação
To specify an extended-length path, use the "\?\" prefix. For example, "\?\D:\very long path".
Lembre-se também de que um "caminho de comprimento estendido" é sempre um caminho "absoluto". Você não pode especificar um "formulário relativo" de um "caminho de comprimento estendido".
Eu não tentei executar seu script exato, mas fiz um pequeno teste em um prompt de comando e parece que é viável.
Por exemplo:
@for /f "usebackq delims=" %f in ('dir /s /b "\?\c:\Blah"') do @echo %f
Retorna uma 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
E:
C:>dir /-c /a /w /s /x "\?\c:\Blah" | findstr /b /c:" "
Retorna:
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
O que não parece ser exatamente o que você precisa, então seu comando "dir / findstr" precisará de alguns ajustes.
Eu não tenho nenhum caminho \ arquivos com mais de 260 caracteres, então não posso dizer o que acontece com os caminhos "muito longos", mas isso deve funcionar.
Se o caminho que você está usando for um caminho UNC, a página vinculada acima diz o seguinte:
The "\?\" prefix can also be used with paths constructed according to the universal naming convention (UNC). To specify such a path using UNC, use the "\?\UNC\" prefix. For example,
"\?\UNC\server\share", where "server" is the name of the computer and "share" is the name of the shared folder. These prefixes are not used as part of the path itself.
Um exemplo para ajustar o caminho UNC que você deu em seu comentário deve ser especificado assim:
dir /-c /a /w /s /x "\?\UNC.0.0.10\folder1\folder2" | findstr /b /c:" "