@echo off
if exist lalala.txt (
del lalala.txt
) else (
set a=aaa
set b=bbb
echo %a% > lalala.txt
echo %b% >> lalala.txt
start lalala.txt
)
echo=
pause & exit
lalala.txt 的内容:
ECHO 处于关闭状态。
ECHO 处于关闭状态。
如果只单独用else里面这一部分
@echo off
set a=aaa
set b=bbb
echo %a% > lalala.txt
echo %b% >> lalala.txt
start lalala.txt
echo=
pause & exit
就正常将a和b输出
这是为什么 要怎么解决?
这是因为整个if 语句是一复合语句,批处理会进行一次预处理%a%类的把它处理成if 之前的变量 a 的值,显然之前并没赋值即%a%为尘裂空派脊闭,对于echo 命令为空就是显示当前回显状态
加call并双写%是解决变量延迟扩展的一种方法
两句改为
call echo %%a%%> lalala.txt
call echo %%b%%>> lalala.txt就能得到正常结果
一般的方法是在之前加上setlocal enabledelayedexpansion语句
并在使用野闷%a%之类时用!a!代替即可
没问键迅题啊。
运行梁洞BAT文件后:
再运行一次BAT文件,lalala.txt就被删除稿渣此了。