2014-03-21 2 views
-1

이 코드는 tiffs가있는 디렉토리를 사용하고 tiflib tiffcp.exe를 사용하고 저작권 표시 인 페이지 1에 다른 tiff를 삽입합니다. 압축을 호출 할 때 계속해서 오류가있는 부분입니다. & $tool -c lzwPowershell - 작은 따옴표와 큰 따옴표 모두에 공백 오류가있는 인수

가 제공 오류는 지금, 인수에 공백이 있기 때문에이 것을 알고

& $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

나는 Poweshell 자체에서 버그/선택의 희생자가되었다고 생각합니다. 나는이 정확한 문제를 겪고 있다고 생각한다.

Ignoring an errorlevel != 0 in Windows Powershell

https://superuser.com/questions/213848/using-powershell-call-native-command-line-app-and-capture-stderr

을 그래도 난 내 코드를 정리하는 방법으로 마음에 여기에 주어진 답을 취할 것입니다. 도와 주셔서 감사합니다!

+0

재미 있습니다! 그리고 PowerShell의 오류에 대해 최근에 본 또 다른 게시물에 대한 답변입니다. 나는 아직도 당신의 파일 이름들이 어떻게 손상되지 않았는지 알지 못하지만 오. – TessellatingHeckler

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 
+0

나도 그 솔루션 작업 중 하나. 실제로 변수를 전달하지 않습니다. 기본적으로 tiffcp.exe는 아무 것도 실행하지 않습니다. 출력 결과는 나에게 모든 옵션 목록을 제공합니다. C에서 LIBTIFF, 버전 3.8.2 : 'tiffcp.exe : 그것은이 오류를 제공 \ 2 Insert_Copyright_into_TIFFs.ps1 : 15 문자 : 5 + & $ 도구 $ 인수 + ~~~~~~~~ ~~~~~ + CategoryInfo : NotSpecified (LIBTIFF, 버전 3.8.2 : 문자열)]는 RemoteException + FullyQualifiedErrorId : 의 Arg가 '0 extispex

+0

여기서는이며 echoargs .2-1-bin \ bin \ tiffcp.exe> ​​ Arg 1은 <-c lzw> 입니다. Arg 2는 입니다. Arg 3은 입니다. Arg 4는 ' – extispex

+0

PS d에 모든 내용을 입력하면 그것이 작동합니까? 'C는 : \ TIFF-3.8.2-1-빈 \ 빈은 \ tiffcp.exe -c LZW C : \ 저작권 페이지는 \ copyright.tif C : \ 또는 test.tif C : \ 저작권 test.tif' 걷어차하지 않습니다 다시 오류가 있습니까? – TheMadTechnician

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.

  • 내가 if ($tif -match 'copyright') 또는 if ($tif.Name.Contains("copyright"))이 더 좋은 느낌을 생각 유사한 문자열` "처리 $의 TIF"에 대한 보간 및

  • 를 사용하지만, 당신이 얻을-ChildItem을을 때, 왜 이전의 사람들을 필터링하지?

편집 예제 코드 필터링 이미 저작권 사람 :

예를 들어,

$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 
} 
+0

이름 지정에 문제가없는 것 같습니다. 제가 말했던 것처럼, 스크립트는 작동했고, 모든 파일의 이름이 올바르게 지정되었습니다. 그러나 어쨌든 두 예제 모두 동일한 오류를 발생시킵니다. '& $ 도구 -c LZW "C : \ 저작권 페이지 \ copyright.tif"$ tif.FullName $ ... + ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ + CategoryInfo : NotSpecified : (TIFFReadDirecto ... 4) encountered.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError' – extispex