2016-09-24 12 views
0

へのPowerShellのエラーの処理しますpowershellコマンドがエラーを返さなかった場合のみ($ aまたは$ bはfalse)。私はこれに似ているPowerShellのコードを持っているバッチファイル

はこれまでのところ、私はこのような多くのことを試してみましたが、彼らはすぐに私のバッチファイルクローズ:

@echo off 
`some batch code here` 
powershell -Command "& { }" 
echo %errorlevel% 
if '%errorlevel%' NEQ '5' 
{ 
    `code here` 
} 
echo ERROR 
pause 
exit 

私はそれを行うための最善の方法を、私はコードでのPowerShellの「IF」ブロックを終了することができればだろう"5"とし、エラーが5かどうかをチェックするifステートメントをバッチで入れます。echo %errorlevel%はその場合 "5"を出力しますが、ifステートメントが機能しないように見えます。 PowerShellで

+0

バッチにおいて、ブロックは括弧で囲まれている '()'ない括弧内 '{}'。また、開始括弧は、ブロックが "%errorlevel%" equ '5'( '。)のように始まる行になければなりません。サンプル回答を参照してください。 – elzooilogico

答えて

1
@echo off 
`some batch code here` 
powershell -Command "& { if $a -eq $false -or $b -eq $false { 'FALSE'; exit 5} }" 
echo %errorlevel% 
if '%errorlevel%' NEQ '5' (
    `code here` 
) 
echo ERROR 
pause 
exit 
+0

あなたのアンカーに感謝します。最後に、NEQの代わりに 'EQU'を使ってあなたのコードに似たことをしました。@ elzooilogicoの答えに答えると、 – DiVeRsi0n

+0

私はこのコメントで混乱しているのでしょうか?elzooilogicoのあなたのコメントであなたは答えました_ "問題は私が5と(" _の間にスペースがないということでした。私の答えは、このコードを書く正しい方法を示しています: 'if'(カッコの代わりに)とスペースの間にスペースを入れて括弧を使います。 '' 5 'と ''( '、あなたが何を意味するのか分からない_多くのテストは、最終的にそれを見つけました... "_。 – Aacini

+0

私はあなたが混乱した理由を完全に理解しています。テストでは、私はすでに括弧をカッコに変更してテストしていて、エラーレベルの処理については多くのことを試していたが、実際のエラーは単なるスペースであったためほとんどのテストは役に立たなかった。さらに、私はすでにあなたの返信を読む前に解決策を見つけましたが、私はそれが最高かつより有用なものだと思ったので、私はそれを承認しました。 – DiVeRsi0n

0

あなた終了時に整数を返す:今PowerShellが返されます

powershell -Command "& {C:\scripts\myscript.ps1; exit $lastexitcode}" 

:あなたのバッチファイルで

Exit 0 

または

Exit 25 

は次のようにPowerShellスクリプトを実行しますスクリプトから呼び出し元のバッチファイルへの終了コード。使用できる場所:

echo %errorlevel% 
+0

私の' echo%errorlevel% 'コマンドはエラーレベルを出力しています。別の.ps1ファイルを使用していません – DiVeRsi0n

関連する問題