gpt4 book ai didi

powershell - 将超过一定大小的文件移动到特定目录(并排除特定子目录)

转载 作者:行者123 更新时间:2023-12-02 23:04:25 26 4
gpt4 key购买 nike

背景

最近注册了 50GB box account我去上传我电脑上的照片集。但是,我的大多数目录所包含的子目录中的文件都大于允许的单个文件上传限制 250MB。因此需要做一些准备工作

我在谷歌上搜索了这个问题,希望看到一个 robocopy 解决方案,但发现了这个有趣的 powershell 脚本,作者 Jugal Shah反而。基于我之前不存在的 powershell 知识,我安装了必需的文件,进一步搜索了一下,然后将下面的脚本组合在一起,该脚本用于我的基本测试。

问题

在对我珍贵的实际文件运行此操作之前,我有几个问题(备份是的,但始终谨慎)。

  1. 我的以下方法有任何重大问题吗?可以而且应该改进吗?
  2. 在测试中,我偶然发现该脚本无法在隐藏文件夹上运行 - 此功能是从其中排除特定目录(例如 20132014)的最佳方法吗?预先编写脚本,或者可以直接在 powershell 中完成此操作吗?

脚本

#Mention the path to search the files
$path = "c:\temp"
##Find out the files greater than equal to below mentioned size
$size = 249MB
##Limit the number of rows
$limit = 10000
##Find out the specific extension file
$Extension = "*.*"
##script to find out the files based on the above input
get-ChildItem -path $path -recurse -ErrorAction "SilentlyContinue" -include $Extension | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $size} | Move-Item -Destination C:\misc

我的目录结构(第一级) enter image description here

最佳答案

一些建议。

  1. 您需要将结果通过管道传输到 Foreach-object,以便可以移动每个文件。
  2. 您可以使用 -whatif 来测试移动操作。
  3. 我喜欢通过编写输出来仔细检查我正在做的事情来进行测试
  4. 检查对象是否为文件或目录的常用方法是使用 .PSIsContainer
  5. 使用管道时,您可以转到下一行以提高可读性。

    get-ChildItem $path -recurse -ErrorAction "SilentlyContinue" -include $Extension | 
    Where-Object { !($_.PSIsContainer) -and $_.Length -gt $size } |
    ForEach-Object {
    Write-Output "$($_.fullname) $($_.Length / 1Mb)"
    Move-Item $_.fullname C:\misc -whatif
    }

关于powershell - 将超过一定大小的文件移动到特定目录(并排除特定子目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21379562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com