复制文件时嵌套尝试捕获

时间:2019-11-14 11:36:29

标签: powershell try-catch copy-item

我正在从.csv中的文件位置复制文件,该文件不包含文件扩展名。我尝试对有效的'.tif'进行硬编码,但是还有其他文件类型被遗漏了。我尝试使用以下内容,但抛出错误,指出路径显示为C:\ users ...

    if (-not (Test-Path -Path $path -PathType Container)) {
        New-Item -Path $path -ItemType Directory >$null
    }
    #Perform Copy
    echo "Copying document and Prepending Document Date"

    try {
        $copy = [IO.FileInfo]$_.'Document File Path'+'.tif'
        $copy | Copy-Item -Destination "$path\$($_.'Document Date')_$($copy.Name)"
    } catch {
        try {
              $copy = [IO.FileInfo]$_.'Document File Path'+'.pdf'
              $copy | Copy-Item -Destination "$path\$($_.'Document Date')_$($copy.Name)"
        } catch {
            $copy = [IO.FileInfo]$_.'Document File Path'+'.jpg'
            $copy | Copy-Item -Destination "$path\$($_.'Document Date')_$($copy.Name)"
        } finally {
            $copy = [IO.FileInfo]$_.'Document File Path'+'.doc'
            $copy | Copy-Item -Destination "$path\$($_.'Document Date')_$($copy.Name)"
        }
    } finally {
        $copy = [IO.FileInfo]$_.'Document File Path'+'.docx'
        $copy | Copy-Item -Destination "$path\$($_.'Document Date')_$($copy.Name)"
    }
}

1 个答案:

答案 0 :(得分:2)

如果您一次只有一个匹配文件,则类似的事情应该起作用:

maxHeight

如果这会偶然匹配您不想复制的其他文件(例如$name = Split-Path -Leaf $_.'Document File Path' $src = $_.'Document File Path' $dst = Join-Path $path ('{0}_{1}' -f $_.'Document Date', $name) Get-ChildItem "${src}.*" | Copy-Item -Destination { $dst + $_.Extension } 是“ foo”,并且您想复制“ foo.tif”而不是“ foo.bar.txt”),则您可以在复制之前按基本名称进行过滤:

$name