Вы можете заключить get-content в круглые скобки, чтобы он завершился первым перед записью в тот же файл, и по той же причине использовать set-content вместо>.
for /d %%A in (*) do (
echo %%A
tree %%A /F /A>"%%A\info\index.txt"
powershell -Command "(Get-Content -Path '%%A\info\index.txt') | Select-Object -Skip 5 | Select-Object -SkipLast 7 | Set-Content %%A\info\index.txt"
)
все это в powershell:
get-childitem -Directory | foreach-object { tree $_ /F /A| select-object -skip 5 | select-object -SkipLast 7 | set-content $_\info\index.txt }
С псевдонимами:
dir -dir | % { tree $_ /F /A | select -skip 5 | select -SkipLast 7 | set-content $_\info\index.txt }