将变量作为%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并写入正确的系统数据(这必须是一个可移植的脚本,这样才能工作,但会很麻烦)
答案 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