問題タブ [errorlevel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmd - Windows Server 2003ではなく、WindowsXPの子プロセスから終了コードが「失われました」
編集3
さて、これは結局インストーラーの問題ではないようです。簡単なバッチファイルを作成する場合:
そしてそれを次のように呼びます
Windows Server 2003 R2では「12」が表示されますが、XPでは「0」が表示されます。私はこの単純なテストケースを以前に何度もテストしたことがあると思いましたが、明らかにそうではありませんでした。
そのため、タグとタイトルを変更しましたが、この問題に直接関係しない有用な情報が実際にたくさんあるため、他の情報はここに残しておきます。
考え?
以下のオリジナル
VBScriptで記述されたカスタムアクションがあり、Windowsバッチファイルを呼び出しています(カスタムアクションは、基本的に、ユーザーがインストール時に何かを実行できるようにし、後でバッチファイルを実行することで実行できるようにします。これは便利です)。関数は以下のとおりです。
カスタムアクションの外部で同じ種類のコードを実行し、バッチファイルが(EXIT / Bを介して)エラーコードを返す場合、戻り値はintReturnCodeに正しくキャプチャされます。ただし、カスタムアクションからは、終了コードが「失われた」ように見えます。常に0が返されます(これは、WriteMessage呼び出しのインストーラーログで確認できます)。シェルでExecを使用するかRunを使用するかは関係ありませんが、0が返されます。スクリプトは、返す前に独自の戻りコードを書き出します(Execからのstdoutストリームで確認できます)。実際には0です。エラーをインストーラーに正しく報告するには、その戻りコードが必要です。
アイデア?
ちなみに、これはWindowsXPSP3上のWindowsインストーラ3.0です。インストーラーはWiseにあるので、WiXスニペットを持っていないか、インクルードしますが、これは呼び出されている関数です。
また、これはやや削除されています-私はその関数と同様にWriteMessageへのコメントや他の呼び出しを省略しました。そして、はい疑似-ハンガリー語は邪悪な何とか何とか何とかです。
編集:これがCバージョンのコードです。それはまったく同じ問題を与えています:
Windows Server 2003 R2 Visual Studio 2008ボックスで実行すると、期待どおりのエラーコードが表示されます。
Windows XPテストボックスで実行すると、エラーになるはずですが、0が表示されます。
どちらのマシンにもWindowsインストーラ3.1が搭載されています。XPは3.01.4001.5512、2003R2は3.01.4000.3959です。
ですから、私には何がわからないのですが、それはボックス間で異なる動作をするものです。
編集2
Wise for Windowsインストーラツールによって生成されたアクションの正確なテーブル行は、次のとおりです。
"RunMigrationActionCA"、 "1537"、 "Calllaunchchildprocess"、 "RunMigrationAction"、 "0"
即時フラグをテストするために、タイプ列に0x800を追加しましたが、終了動作に変化は見られませんでした。
明確にするために、これは2003R2マシンで正常に機能します。そのマシンはドメインに参加していませんが、XPマシンはドメインに参加しています。この動作を引き起こす可能性のあるグループポリシーに何かありますか?(この時点でストローを握ります。)
windows - %errorlevel%を介して終了コードを取得するにはどうすればよいですか?アセンブリプログラムでは機能しなくなります
チュートリアルアセンブリプログラムの終了コードを取得したい(masm32とリンクを使用)。正常に機能%errorlevel%
していました。echoと入力すると、後に入力した終了コードが表示されinvoke ExitProcess
ます。今ではもう動作しません。OpenSuse 12.1ホストでVirtualBoxを使用し、ゲストとしてWindows VistaHomePremiumを使用しています。答えを探しましたが、足りませんでした。ほとんどの苦情はバッチファイルの使用に関するものですが、これは私がやろうとしていることではありません。これが簡単なプログラムです
hello_world.asm
2を返すと思いますが、 echo %errorlevel%
0を返します。何か足りないものはありますか?ありがとう、そして私はこの質問が死ぬまで答えられたことをお詫びします。答えが見つかりません。
編集:実際、私は私の答えの一部を見つけました。を使用してリンクした場合にのみ機能し/SUBSYSTEM:CONSOLE
ます。使用する/SUBSYSTEM:WINDOWS
と常に0が返されます。これをどうすればよいかわかりません。Windowsプログラムの終了コードはどこにありますか?どんな情報でも大歓迎です。
batch-file - FTP サーバーの応答がバッチで検出されないことがある
FTP経由でファイルを転送するためにWin2003でバッチファイルを実行しています。
バッチ ファイルは、FTP セッションの結果を FIND にパイプして、226 成功メッセージがあるかどうかを確認します。これはうまく機能します。残念ながら、ファイルが正常に転送され、226 メッセージが返されたにもかかわらず、スケジューラからエラーレベルの状態に陥っています。
ユーザー アカウントは管理者アカウントなので、権限の問題ではありません。何か案は?
アップデート:
226 メッセージはリダイレクト経由でキャプチャされていないため、FIND に失敗します。私のテストでは、スケジューラからの実行時に FTP 出力を別のファイルにリダイレクトしました。FTP コマンドは正常に実行されていますが、サーバーの応答がまったく表示されません。
これが私のFTPスクリプトです:
これが出力です(FTP -s:go.ftp >ftp.log 2>ftp.err
)。
さらに、エラー ストリームには何も表示されません ( 2>ftp.err )。少なくとも、FIND のエラーレベルがトリガーされない理由はわかりましたが、FTP サーバーの応答がキャプチャされないのはなぜですか? -v スイッチを使用していないか、詳細を切り替えていません。
windows - Windows から Linux スクリプトをリモートで実行し、実行結果コードを取得する
現在対処すべきシナリオがあります。会社の Linux ベースのサーバー (Suse Linux の下) のバックアップを、ARCServe R15 (Windows 2003R2SP2 にインストール) でスケジュールする必要があります。バックアップ ソフトウェア (ARCServe) には、実行前/実行後のスクリプトをバックアップ ジョブに追加する機能があることを知っています。スクリプトが失敗した場合、ARCServe はバックアップ ジョブを実行しないように指定され、成功した場合は実行するように指定されます。私はこれで問題ありません。
問題は、クラスターで Linux スクリプトを実行するための Windows スクリプト (ARCServe によって起動される) を作成したいということです。実行されない - Linux スクリプトが成功した場合、Windows スクリプトをエラー コード 0 で正常に終了させたいので、ARCServe ジョブは正常に実行されます。このバッチ ファイルを作成してみました (HPC.bat と呼びましょう):
エコーオン
start /wait "C:\Program Files\PUTTY\plink.exe" -v -l root -i "C:\IST\admin\scripts\HPC\pri.ppk" [クラスター名] /appli/admin/backup_admin
終了 %errorlevel%
この .bat をダブルクリックして手動で起動するか、Windows のコマンド プロンプトで起動すると、正常に実行されて終了します。ARCServeで起動させるとスクリプトが終わらないらしい。私のジョブは「待機中」の状態のままです。Linux スクリプトの実行コードがバッチ ファイルに返されていないようで、これは閉じません。私の考えでは、plink は Linux への接続を開き、sript 実行信号を送信してから接続を閉じるだけなので、実行コードをバッチに返すことはできません。私は正しいですか?
私がやりたいことは可能ですか、それとも不可能なことをしようとしていますか? それで、私は別の方法で進めなければなりませんか?plink の代わりに PUTTY または CygWin を使用する必要がありますか? お願いです、頭が痛いです...
autohotkey - オートホットキー - 画像検索
現在の画面と必要な画面の画像を比較し、それらが一致するかどうかを確認して、GUI をテストしようとしています。これには AutoHotKey の ImageSearch を使用しています。
ErrorLevel = 1 が発生し続けます。これを解決する方法についての提案。
ありがとう
cmd - sqlcmd を実行した後のコマンド プロンプト エラーレベルの問題
私のコードは以下の通りです:
私が直面している問題はerrorlevel
、データベース スクリプトを実行すると常に 0 が返されるためCALL:ECHORESULT "result [OK=0,ERR=any other]: %errorlevel%" %errorlevel%
です。スクリプトがエラーで実行された場合、FINAL_ERROR
. スクリプト エラーが発生したときにプロセスを停止するための検証を行う方法がわかりません。
cmd - プログラムを実行せずにCMDがErrorLevelを返す
CMDプロンプトからPowershellコマンドを実行していますが、コマンドの実行を開始する前に、Powershellが最初にインストールされているかどうかを確認したいと思います。以下の実際のエラーを表示せずにPowerShellが存在しない場合は、スクリプトを終了してください。これが私のスクリプトです:
私が抱えている問題は、これを出力として取得していることです。
windows - コマンドライン出力をリダイレクトして、エラーメッセージがコマンドウィンドウに表示されないようにする
フォルダの存在をテストしていますが、その存在に応じて、さまざまなコマンドを実行したいと思います。
問題は、フォルダが存在しない場合、標準の出力に加えて次のエラーが発生することです。
エラーが発生せずに正しい出力を表示したいのですが。
perl - Perl スクリプトを実行し、その終了値を Windows バッチ スクリプトで取得するための構文は何ですか?
1
バッチ内で呼び出している Perl スクリプトは、、、2
またはを返します3
。引数 829 を指定してこの perl スクリプトを呼び出し、スクリプトの終了コードを取得するための構文は何ですか?