我已经花了好几个小时来解决这个问题,但是我找不到合适的解决方案。
这是我的问题描述:
我是powershell的新手,不知怎的,我读书并制作了一个必需的代码,但它显示的错误让我无法解决。代码的作用是从文件夹中提取图像,并根据最接近的可用比率(0.67,1.33,1.2)将每个图像的副本放置在文件夹(0.67,1.33,1.2)中的图像宽高比与其他位置之间。
我的代码看起来或多或少像这样:
[System.Reflection.Assembly]::LoadFile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll")
#index of minimum value
$p = [array]::IndexOf($ratioarray, $minimum)
if($p -eq 0){
$dst_dir = $des_dir+"powershell\0.4"
if (!(Test-Path $dst_dir)) {
# create it
[void](new-item $dst_dir -itemType directory)
}
Copy-Item $src_dir$image $dst_dir
}
if($p -eq 1){
$dst_dir = $des_dir+"powershell\0.5"
if (!(Test-Path $dst_dir)) {
# create it
[void](new-item $dst_dir -itemType directory)
}
Copy-Item $src_dir$image $dst_dir
}
if($p -eq 2){
$dst_dir = $des_dir+"powershell\0.67"
if (!(Test-Path $dst_dir)) {
# create it
[void](new-item $dst_dir -itemType directory)
}
Copy-Item $src_dir$image $dst_dir
}
"$name|$width|$height|$ratioroundoff|$dst_dir" >> $datafile
$imageFile.Dispose()
}
它给出错误:
Copy-Item : The given path's format is not supported.
At C:\Users\busy\desktop\copyflow.ps1:71 char:10
+ Copy-Item <<<< $src_dir$image $dst_dir
+ CategoryInfo : InvalidOperation: (C:\Users\busy\D...ics2\jack.jpg:String) [Copy-Item], NotSupportedException
+ FullyQualifiedErrorId : ItemExistsNotSupportedError,Microsoft.PowerShell.Commands.CopyItemCommand
答案 0 :(得分:1)
问题似乎与文件名有关。 $images = Get-ChildItem -Recurse $src_dir -Include *.jpg
将使用已存在绝对文件名的FileInfo
个对象填充集合。不需要路径修改。
而不是
Copy-Item $src_dir$image $dst_dir
尝试类似
的内容Copy-Item $image.FullName $dst_dir
如果仍然无效,请将输出打印到控制台并检查错误。像这样,
write-host $("Copy-Item {0} {1}" -f $image.FullName, $dst_dir)
Copy-Item -whatif $image.FullName $dst_dir