将变量写入文件%VAR%而不是BAT中变量的值

时间:2011-04-25 04:01:14

标签: batch-file command cmd boot

将变量作为%VAR%写入文件而不是变量的值,并在重定向输出时要求使任务列表正常工作。

用于写入文件的代码:

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只是有这个小问题。

我认为只有“解决方法”是制作第一个脚本,在第一个文件中回显echo并写入正确的系统数据(这必须是一个可移植的脚本,这样才能工作,但会很麻烦)

3 个答案:

答案 0 :(得分:2)

如果您在命令行中,则可以使用%转义^

例如:

set var=test
echo %var%

回应test

set var=test
echo ^%var^%

回应%var%

在批处理文件中,您必须使用double% -

set var=1
echo %%var%%

回应%var%

答案 1 :(得分:2)

%可以使用百分比在批处理内进行转义。

echo %%var%%

这在命令行上不起作用,因为解析器在那里工作有点不同 百分比不存在转义字符,但如果变量不存在则预先设置百分比。

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

结果
    %var %% content%

答案 2 :(得分:0)

只需加倍百分号即可逃脱它们,并使用插入符号来逃避大多数其他特殊字符。我将如何做到这一点:

(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