开发者

Write variables to file as %VAR% not as the value of the variable in BAT

Write variables to file as %VAR% not as the value of the variable, as well ask making tasklist function properly when redirecting output.

Code im using to write to file:

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

Result:

tasklist /FI "IMAGENAME eq Zoiper.exe"  
if "0"=="1" start /d "C:\Documents and Settings\mgladman\Desktop\Zoip\Zoiper Communicator\" Zoiper.exe 

What I want added to boot.bat:

tasklist /FI "IMAGENAME eq %ZOEXT%" 2>NUL | find /I /N "%ZOEXT%">NUL
if "%ERRORLEVEL%"=="1" start /d "%ZODIR%" %ZOEXT%

If you want i can publish whole cod开发者_Python百科e not just segment, it is a cool script :P Just has this small issue.

Only "workaround" i can think is to make the first script, to echo echo in the first file and write the correct system data (this has to be a portable script, so that would work, but would be messy as)


You can escape the % using ^ if you are in command line.

For example:

set var=test
echo %var%

echoes test

set var=test
echo ^%var^%

echoes %var%

In batch file you have to use double % -

set var=1
echo %%var%%

echoes %var%


The % can be escaped inside of an batch with a percent.

echo %%var%%

This doesn't work on the command line, as the parser works there a bit different.
There didn't exists an escape character for the percent, but percents are preseverd if the variable doesn't exist.

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

results in
%var% %content%


Just double the percentage signs to escape them, and use carets to escape most other special characters. Here is how I would do it:

(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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜