8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

根据方向移动子文件夹中的图像

Christian K. 2月前

42 0

我有以下脚本,可以将纵向图像移动到名为“portrait”的子文件夹中。它运行良好,但前提是脚本位于与

我有以下脚本,可以将纵向图像移动到名为“肖像”的子文件夹。

它运行得很好,但前提是脚本位于与图像相同的文件夹中并从中执行。这意味着我必须将脚本复制到我的所有文件夹中,并为每个文件夹运行一次(很痛苦!)。

我如何修改脚本以便可以从父文件夹找到并执行它并递归任何图像子文件夹,例如:

Folder (script is here)
SubFolder1 (images are here)
SubFolder2 (images are here)
SubFolder3 (images are here)

And results in:

Folder
SubFolder1\portrait (portrait images are moved here)
SubFolder2\portrait (portrait images are moved here)
SubFolder3\portrait (portrait images are moved here)

脚本:

Add-Type -AssemblyName System.Drawing

$ImageList = Get-ChildItem "*.jp*g"
$LandscapePath = ""
$PortraitPath = "portrait"

md portrait

Foreach($ImageFile in $ImageList)
{
    #Get the image information
    $image = New-Object System.Drawing.Bitmap $ImageFile.Fullname
    #Get the image attributes
    $ImageHeight = $image.Height
    $ImageWidth = $image.Width
    #Close the image
    $image.Dispose()
    If($ImageWidth -lt $ImageHeight)
    {
        Move-Item -LiteralPath $ImageFile.FullName -Destination $PortraitPath -Force
    }
}

我试过

$ImageList = Get-ChildItem "*.jp*g" -Recurse

但最终将子文件夹中的所有图像放入了父文件夹中的肖像文件夹中......

谢谢

初始脚本 https://powershelladministrator.com/2021/09/20/move-images-based-on-dimension/ https://powershelladministrator.com/2021/09/20/move-images-based-on-dimension/

帖子版权声明 1、本帖标题:根据方向移动子文件夹中的图像
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Christian K.在本站《powershell》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您可以移动逻辑以 portrait 在循环内创建目录,然后可以添加 -Recurse Get-ChildItem 遍历所有子目录,并且在循环内部可以加入文件的 .DirectoryName property (获取文件父目录的绝对路径)来 portrait 创建每个文件的目标路径:

    Add-Type -AssemblyName System.Drawing
    
    $jpgs = Get-ChildItem -Filter '*.jp*g' -Recurse
    $jpgs | ForEach-Object {
        try {
            $image = [System.Drawing.Bitmap]::new($_.FullName)
            $shouldMove = $image.Width -lt $image.Height
        }
        finally {
            if ($image) {
                $image.Dispose()
            }
        }
    
        if ($shouldMove) {
            # join the jpg parent directory path with `portrait`
            $portraitPath = Join-Path $_.DirectoryName -ChildPath portrait
            # if the folder doesnt exist
            if (-not (Test-Path $portraitPath)) {
                # create it
                $null = New-Item $portraitPath -ItemType Directory
            }
    
            # move it to new dir
            $_ | Move-Item -Destination $portraitPath -Force
            Write-Host "Moving '$($_.FullName)' to '$portraitPath'"
        }
    }
    
  • 感谢您的回复,我尝试了此代码,它所做的就是在与脚本相同的目录中创建一个肖像子文件夹......

  • @MisterNobody 你确定你正在尝试这个确切的答案吗?我删除并更新了我之前的答案

返回
作者最近主题: