変数の値としてではなく %VAR% として変数をファイルに書き込み、出力をリダイレクトするときに tasklist が適切に機能するように依頼します。
ファイルへの書き込みに使用するコード:
echo tasklist /FI "IMAGENAME eq %ZOEXT%" 2>NUL | find /I /N "%ZOEXT%">NUL >> boot.bat
echo if "%ERRORLEVEL%"=="1" start /d "%ZODIR%" %ZOEXT% >> boot.bat
結果:
tasklist /FI "IMAGENAME eq Zoiper.exe"
if "0"=="1" start /d "C:\Documents and Settings\mgladman\Desktop\Zoip\Zoiper Communicator\" Zoiper.exe
boot.bat に追加したいもの:
tasklist /FI "IMAGENAME eq %ZOEXT%" 2>NUL | find /I /N "%ZOEXT%">NUL
if "%ERRORLEVEL%"=="1" start /d "%ZODIR%" %ZOEXT%
必要に応じて、セグメントだけでなくコード全体を公開できます。これはクールなスクリプトです:P ただ、この小さな問題があります。
私が考えることができる唯一の「回避策」は、最初のスクリプトを作成し、最初のファイルにエコーをエコーし、正しいシステムデータを書き込むことです(これは移植可能なスクリプトでなければならないため、機能しますが、面倒です)