此代码采用tiffs目录,使用tiflib tiffcp.exe并在第一页插入另一个tiff,这是一个版权声明。当我调用压缩时,持续出错的部分。 & $tool -c lzw
它给出的错误是
& $tool -c lzw `
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (TIFFReadDirecto...4) encountered.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
现在,我知道这是因为参数中有一个空格。我试过把它放在双引号,单引号,把它放在一个参数,把它放在两个参数,以及其他一些东西。无论我做什么,LZW部分似乎都会出错。我应该说它仍然有效。它仍会插入页面并移动旧副本。感谢您提供任何帮助。
$tool = 'c:\tiff-3.8.2-1-bin\bin\tiffcp.exe'
$tifs = get-childitem . | where {$_.Extension -match "tif"}
foreach($tif in $tifs)
{
if ($tif -like '*copyright*')
{
"File already has copyright notice " + $tif
}
else
{
'Processing ' + $tif.Name
$output = "copyright-$tif"
& $tool "-c lzw" `
"c:\copyright pages\copyright.tif" $tif.FullName $output
Move-Item $tif C:\backup
}
}
答案 0 :(得分:0)
尝试使用一组参数。
$Args = @("-c lzw","c:\copyright pages\copyright.tif",$tif.FullName,$output)
& $tool $Args
或者,如果您对此感到不舒服,可以将变量分配给所有内容,只需将变量抛出到调用操作符,如下所示:
$arg1 = "-c lzw"
$arg2 = "c:\copyright pages\copyright.tif"
$arg3 = $tif.FullName
& $tool $arg1 $arg2 $arg3 $output
答案 1 :(得分:0)
此代码:
$output = "copyright-$tif"
& $tool "-c lzw" "c:\copyright pages\copyright.tif" $tif.FullName $output
导致命令有点像这样:
tiffcp.exe -c lzw "1.tif" "c:\2.tif" "copyright-c:\2.tif"
问题是"copyright-$tif"
正在放入完整的文件路径,这会使输出成为无意义的文件名。
尝试:
$tool = 'c:\tiff-3.8.2-1-bin\bin\tiffcp.exe'
$tifs = Get-ChildItem .\*.tif
foreach ($tif in $tifs)
{
if ($tif -like '*copyright*')
{
write "File already has copyright notice $tif"
} else {
write "Processing $tif"
$output = "copyright-$($tif.Name)"
& $tool -c lzw "c:\copyright pages\copyright.tif" $tif.FullName $output
Move-Item $tif C:\backup
}
}
评论:
Get-ChildItem可以直接找到* .tif,无需获取所有文件并使用where,所以我改了。
使用字符串插值`"处理$ tif"和类似的
我认为if ($tif -match 'copyright')
或if ($tif.Name.Contains("copyright"))
感觉更好,但为什么不在早些时候过滤掉那些,当你得到孩子时?
编辑示例代码过滤掉已经受版权保护的代码:
e.g。
$tool = 'c:\tiff-3.8.2-1-bin\bin\tiffcp.exe'
$tifs = (gci .\*.tif | ?{ $_.Name -notmatch "copyright" })
foreach ($tif in $tifs) {
write "Processing $tif"
& $tool -c lzw "c:\copyright pages\copyright.tif" "$tif" "copyright-$($tif.Name)"
Move-Item $tif C:\backup
}
答案 2 :(得分:0)
我相信我已成为Poweshell本身的一个错误/选择的受害者。我想我遇到了这个确切的问题。
Ignoring an errorlevel != 0 in Windows Powershell
和
我会尽力将这里给出的答案作为清理代码的方法。谢谢你的帮助!