You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell读取文本文件中的JPG文件名并将对应文件移动至同名文件夹

解决PowerShell中按文本文件指定移动JPG文件的问题

我来帮你完善这段代码,核心是要从每个文本文件里精准提取对应的JPG文件名,然后高效找到并移动这些文件。原代码的主要问题是嵌套循环逻辑冗余,以及匹配文件的方式不够准确,下面是修正后的完整代码:

$path = "C:\Users\Yo\Desktop\Brunnar" # 目标文件夹路径
# 获取所有TXT文件
$txtFiles = Get-ChildItem -Path $path -Filter "*.txt" -File
# 将所有JPG文件存入哈希表,键为文件名,值为文件对象,方便快速查找
$jpgLookup = @{}
Get-ChildItem -Path $path -Filter "*.JPG" -File | ForEach-Object {
    $jpgLookup[$_.Name] = $_
}

# 遍历每个TXT文件
foreach ($txtFile in $txtFiles) {
    $folderName = [io.path]::GetFileNameWithoutExtension($txtFile.Name)
    $targetFolder = Join-Path -Path $path -ChildPath $folderName

    # 确保目标文件夹存在(你说已经创建了,这一步可以保留做容错)
    if (-not (Test-Path -Path $targetFolder -PathType Container)) {
        New-Item -Path $targetFolder -ItemType Directory | Out-Null
    }

    # 读取TXT文件内容,提取所有JPG文件名
    $content = Get-Content -LiteralPath $txtFile.FullName -Raw
    # 用正则匹配所有以R开头、.JPG结尾的文件名
    $jpgNames = [regex]::Matches($content, 'R\d+\.JPG') | ForEach-Object { $_.Value }

    # 遍历每个提取到的JPG文件名,移动对应文件
    foreach ($jpgName in $jpgNames) {
        if ($jpgLookup.ContainsKey($jpgName)) {
            $jpgFile = $jpgLookup[$jpgName]
            try {
                Move-Item -LiteralPath $jpgFile.FullName -Destination $targetFolder -Force
                Write-Host "已移动文件: $jpgName -> $targetFolder"
            }
            catch {
                Write-Warning "移动文件失败 $jpgName : $_"
            }
        }
        else {
            Write-Warning "未找到对应JPG文件: $jpgName"
        }
    }
}

关键逻辑说明

  • 哈希表存储JPG文件:把所有JPG文件按文件名存入哈希表,这样查找文件的时间复杂度是O(1),比每次遍历文件夹高效很多,尤其是文件数量多的时候。
  • 正则提取文件名:用正则R\d+\.JPG匹配文本里的JPG文件名(适配你给出的R0010313.JPG这类格式),如果文件名格式有变化,可以调整正则,比如R\w+\.JPG匹配R开头加任意字母数字的文件名。
  • 容错处理:加入了try/catch块处理移动时的异常(比如文件被占用),同时输出提示信息,方便排查问题。
  • 简化循环逻辑:去掉了原代码里冗余的嵌套循环,直接遍历每个TXT文件处理,逻辑更清晰。

内容的提问来源于stack exchange,提问作者Anton Sandström

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:52:38