0

.bat ファイルが実行されるとすぐにエラーレベルは 0 になります。ただし、次のような条件としてエラーレベルを使用しています。

REG Query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\test 2>NUL>>MMG.dat
If %ERRORLEVEL% == 0 goto turnon

REG Query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\test2>NUL>>MMG.dat
If %ERRORLEVEL% == 0 goto turnon

REG Query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\test 3>NUL>>MMG.dat
If %ERRORLEVEL% == 0 goto turnon
If %ERRORLEVEL% == 1 goto EOF

私の問題は、エラーレベルが既に 0 に設定されている場合、条件が無効になることです。

とにかく私はこれを回避できますか?

注: errorlevel はファイル内のどこにも設定されていません。

私はこの言語を学んでいるので、明らかな間違いである場合はご容赦ください

ありがとう

4

1 に答える 1

2

さまざまな理由で変数自体を実際に使用するのは悪い考えであることを思い出すようです。%errorlevel%その中には、手動で設定して実際の戻りコードから切り離すことができるという事実があります。詳細については、Rob van der Woude のスクリプティング ページのこの項目を参照してください。これは、Windows/DOS でのスクリプティングに関するすべての貴重なリソースです。

次のようなものを使用する必要があります。

if errorlevel 1 ...

ただし、ここであなたが間違っていると考えていることは完全にはわかりません。はい、スクリプトが開始する前にゼロに設定%errorlevel% できますが、最初の呼び出しによって変更され、reg成功した場合は 0 に、失敗した場合は 1 に設定されます。

失敗した場合に何かを行うことが意図されているreg query場合は、単に次を使用します。

reg query 1 blah blah blah
if errorlevel 1 goto turnon

reg query 2 yak yak yak
if errorlevel 1 goto turnon

reg query 1 bjork brork bjork
if errorlevel 1 goto turnon

何かをする場合 (質問/コメントに応じて失敗した場合のアラートなど)、方法と値がわずかに異なるだけで、問題はありません。

set bad=0

reg query 1 blah blah blah
if errorlevel 1 goto alert

reg query 2 yak yak yak
if errorlevel 1 goto alert

reg query 1 bjork brork bjork
if errorlevel 1 goto alert

rem all queries returned success.
于 2013-12-11T00:54:49.337 に答える