1

変数の値としてではなく %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 ただ、この小さな問題があります。

私が考えることができる唯一の「回避策」は、最初のスクリプトを作成し、最初のファイルにエコーをエコーし​​、正しいシステムデータを書き込むことです(これは移植可能なスクリプトでなければならないため、機能しますが、面倒です)

4

3 に答える 3

2

コマンドラインを使用している場合は、 %using をエスケープできます。^

例えば:

set var=test
echo %var%

エコーtest

set var=test
echo ^%var^%

エコー%var%

バッチファイルでは、ダブル % を使用する必要があります -

set var=1
echo %%var%%

エコー%var%

于 2011-04-25T04:19:28.683 に答える
2

%、パーセントを使用してバッチ内でエスケープできます。

echo %%var%%

パーサーの動作が少し異なるため、これはコマンド ラインでは動作しません。
パーセントのエスケープ文字は存在しませんでしたが、変数が存在しない場合はパーセントが保持されます。

set "var="
set "var2=content"
echo %var%  %%var2%%

結果は
%var% %content%になります

于 2011-04-26T13:28:57.597 に答える
0

パーセント記号を 2 倍にしてエスケープし、キャレットを使用して他のほとんどの特殊文字をエスケープします。これが私がそれを行う方法です:

(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
于 2011-05-01T21:22:20.907 に答える