【问题标题】:Moving files and folder structure based on days from one drive to another using powershell使用 powershell 根据天数将文件和文件夹结构从一个驱动器移动到另一个驱动器
【发布时间】:2020-01-12 05:54:42
【问题描述】:

我有以下要求。

来源:C:\s

目的地:C:\d

找到的文件超过 255 个字符。

根据最后修改或写入的天数移动文件 (10),它应该复制完整的文件夹结构,如果任何文件根据最后修改日期未修改,它应该在同一文件夹中的源文件中可用。当另一个被修改时,它应该创建一个具有相同文件夹结构和文件的新目录,以便根据源位置路径移动到相同的位置。

我已经尝试了几天的 PowerShell 脚本,但是文件被复制到并且文件夹保留在源本身。

Get-ChildItem -Path C:\s -Recurse | Where-Object {$_.LastWriteTime -lt (Get-date).AddDays(0)} | Move-Item -destination C:\d

到目前为止,输出仅给出文件而不是文件夹结构,如果是空文件夹,则应将其移动到目标文件夹。

谢谢 苏曼

【问题讨论】:

    标签: powershell


    【解决方案1】:

    问题是您使用Get-ChildItem -Recurse 获取所有文件并对其进行过滤,但是当这些文件通过管道传输到Move-Item -Destination 时,您实际上是在说获取所有文件(无论来源如何)并将它们放入单个文件夹C:\d。如果要保留目录结构,则必须通过Move-Item -Destination参数中指定目录结构。

    @AdminOfThings 是正确的,更简单的方法是使用Robocopy。尝试各种开关应该可以满足您的需求。例如:

    Robocopy.exe C:\s C:\d /move /e /minage:10
    

    地点:

    • /move 说移动而不是复制
    • /e 是复制目录,包括空目录
    • /minage:10 是移动超过 10 天的文件。

    【讨论】:

    • Robocopy 的主要优点是移动具有安全权限的文件。
    • C:\s\MANUAL_DRIVER\DEUTSCH\02-01-1980\02-01-1980\02-01-1980\02-01-1980 上面的机器复制移动和创建日期 /月/年文件夹,需要与源文件具有相同的文件夹结构,并且相同的文件夹应该存在于目的地。如果子文件夹有多个具有不同日期戳的文件,那么它应该通过创建相同的目录结构来根据最小年龄 10 拾取特定文件。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2020-01-04
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多