Powershell Select-Object -Skip и -SkipLast выводит пустой файл - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь использовать команду tree для группы папок, а затем обрезать первые 5 строк текста и последние 7. Однако, когда я выполняю команду powershell, файл пуст. Есть предложения?

Вот код:

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">"%%A\info\index.txt"
    )

Ура.

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете заключить 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 }
...