Powershell - перемещайте файлы в разные папки каждый час - PullRequest
0 голосов
/ 28 сентября 2018

Пытаясь переместить изображения из одной папки в другую, но это нужно планировать каждый час, перемещая порцию за раз, я разбил изображения на папки по 1000 изображений в каждой папке.

Структура папок;

tobemoved\1
tobemoved\2
tobemoved\3
tobemoved\4

[etc.. up to 66]

Эти файлы перемещаются в одну папку в сети \\images\web\upload

Возможно ли добиться этого с помощью скрипта Powershell или любых предложений простогоспособ сделать это?

1 Ответ

0 голосов
/ 28 сентября 2018

Я бы не использовал Sleep, как упоминалось в комментариях, это означало бы, что у вас есть один длительный скрипт с минимальной возможностью восстановления после сбоя.Если сценарий завершается сбоем, действия копирования не выполняются до его повторного запуска.

Вместо этого используйте планировщик заданий, чтобы запускать сценарий каждый час.Он предназначен для запуска задач по расписанию и имеет опции для устранения сбоев и повторного запуска.

Каждая задача запускается в своем собственном процессе, поэтому, если предыдущая задача дает сбой, она не влияет на следующую задачу.- который все еще работает как обычно.


Нет необходимости пакетировать изображения в папки, вы можете использовать Select-Object, чтобы сделать это для вас.

Get-ChildItem C:\folder\source -File -Recurse | Select-Object -First 1000 | Move-Item -Destination \\images\web\upload -WhatIf

Это выберетпервые 1000 файлов по имени и пути:

C:\folder\source\imageA.jpg
C:\folder\source\imageB.jpg
C:\folder\source\folderA\imageF.jpg
C:\folder\source\folderA\imageE.jpg
C:\folder\source\folderB\imageD.jpg
C:\folder\source\folderC\imageC.jpg

и переместите их все в папку \\images\web\upload:

\\images\web\upload\imageA.jpg
\\images\web\upload\imageB.jpg
\\images\web\upload\imageC.jpg
\\images\web\upload\imageD.jpg
[etc]

Примечание. Предполагается, что вы используете современную версию Powershell.так как параметр -File недоступен в более ранних версиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...