Цепочка «Get-ChildItem | Move-Item» пропускает папки верхнего уровня - PullRequest
0 голосов
/ 28 сентября 2019

Предположим, у вас есть следующая структура внутри текущей папки

f0
|-f1
| |-a.txt
|-f2
  |-b.txt

Если вы выполните следующую команду внутри этой папки:

powershell -Command "Get-ChildItem -Path 'f0\\*' -Recurse | Move-Item -Destination '.'"

файлы a.txt и b.txt будет скопирован, но без родительских папок f1 и f2 .

Но, если вы добавите какой-либо файл в f0 папка

f0
|-f1
| |-a.txt
|-f2
| |-b.txt
|-fake.txt

Та же команда powershell будет работать, как ожидалось

f0
f1
|-a.txt
f2
|-b.txt
fake.txt

Я что-то упустил?

Спасибо.

Обновление

Первоначальная задача - автоматическое развертывание cmake.Это исходный скрипт:

echo Downloading https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-win64-x64.zip
powershell -Command "(New-Object System.Net.WebClient).DownloadFile('https://github.com/Kitware/CMake/releases/download/v3.15.3/cmake-3.15.3-win64-x64.zip', 'cmake-3.15.3-win64-x64.zip')"
powershell -Command "Expand-Archive -LiteralPath cmake-3.15.3-win64-x64.zip -DestinationPath ."
powershell -Command "Get-ChildItem -Path 'cmake-3.15.3-win64-x64\*' -Recurse | Move-Item -Destination '.'"
powershell -Command "Remove-Item 'cmake-3.15.3-win64-x64'"
powershell -Command "Remove-Item 'cmake-3.15.3-win64-x64.zip'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...