Esta foi de alguma forma uma questão difícil. Mesmo o StackOverflow tem apenas soluções sofisticadas
Mas aqui está um simples para listar todos os arquivos recursivamente sem loops de pastas de junção.
Use o PowerShell e teste cada arquivo se ele contiver o atributo "ReparsePoint"
function Recurse($path) {
$fc = new-object -com scripting.filesystemobject
$folder = $fc.getfolder($path)
foreach ($i in $folder.files) { $i | select Path }
foreach ($i in $folder.subfolders) {
$i | select Path
if ( (get-item $i.path).Attributes.ToString().Contains("ReparsePoint") -eq $false) {
Recurse($i.path)
}
}
}
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$outputlist = Recurse($scriptPath) | Out-File -Filepath .\outputlist.txt
- Cole o código em um arquivo de texto e salve-o como script do PowerShell (.ps1)
- Coloque o script dentro da pasta desejada para listar todos os arquivos + pasta recursivamente
- Execute o script com o PowerShell. Um novo arquivo chamado
outputlist.txt
no mesmo local aparecerá
Comparação rápida entre o script Powershell e um comando em lote comum
powershell - good, no indefinite loops
batch"DIR /B /S" - bad, indefinite loops through junctions points