Это глупый вопрос, но я просто не знаю, почему он не работает.
Я пытаюсь скопировать файлы из FolderA в FolderB рекурсивно. Я делаю это:
Copy-Item -Path "C:\FolderA\" -Destination "C:\FolderB\" -recurse -Force -Verbose
Работает отлично, без проблем.
За исключением результата в FolderB это:
C:\FolderB\FolderA\file.txt
Тогда как я хочу, чтобы это было:
C:\FolderB\file.txt
Какую глупую очевидную вещь я пропускаю?
powershell
CleverPatrick
источник
источник
Ответы:
Ваша команда говорит PowerShell скопировать саму папку со всем ее содержимым в папку назначения. Чтобы скопировать только содержимое исходной папки, измените путь следующим образом:
Обратите внимание на звездочку (*) после имени папки. Это позволит скопировать содержимое (включая подпапки) папки, но не саму папку в папку назначения.
Использование командлета Copy-Item
источник
md "C:\FolderB"
до этого,Copy-Item
кажется, позволяет избежать этой проблемы.Copy-Item
будет воспроизводить структуру папок, но на один уровень ниже (напримерC:\FolderA\B\C
, копируетсяC:\FolderB\C
вместоC:\FolderB\B\C
), а также может завершиться ошибкой, если существует несколько подпапок. Всегда проверяйте, существует ли папка назначения перед вызовом Copy-Item. Это пахнет как ошибка (я не вижу никакой причины, почему это противоречивое поведение было бы желательно).Вы можете использовать -File -Recurse для копирования только файлов рекурсивно:
Copy-Item -Path "C: \ Source" -Назначение "C: \ Dest" -File -recurse -Force -Verbose
Или используйте -Directory -Recurse для копирования только структуры empy:
Copy-Item -Path "C: \ Source" -Destination "C: \ Dest" -Directory -recurse -Force -Verbose
С уважением,
Пол Педроза
источник
Также будет работать.
источник