Powershell-每小时移动文件到不同的文件夹中

时间:2018-09-28 04:55:24

标签: powershell

试图将图像从一个文件夹移动到另一个文件夹,但这需要每小时安排一次,每次移动一个块,我将图像分块到每个文件夹中的文件夹中,每个文件夹中有1000张图像。

文件夹结构;

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

[etc.. up to 66]

这些文件将被移至网络\\images\web\upload上的单个文件夹

是否可以使用Powershell脚本来实现这一目标,或者是否有实现此目标的简单建议?

1 个答案:

答案 0 :(得分:3)

我不会使用注释中提到的“睡眠”,这意味着您只有一个长时间运行的脚本,而从故障中恢复的选项却很少。如果脚本崩溃,在重新启动之前,不会执行任何复制操作。

相反,使用Task Scheduler每小时运行一次脚本。它旨在按计划运行任务,并具有处理故障和重新运行的选项。

每个任务都在其自己的进程中运行,因此,如果上一个任务失败,则不会影响下一个任务-下一个任务仍会正常运行。


无需将图像批处理到文件夹中,您可以使用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参数在早期版本中不可用。