anchor.diff:  						}
   					});
   				
  -				exec(expand(env, cmd).value);
  -			}
  +				var cmdexpand = expand(env, cmd).value;
  +				var cmds = command_split(cmdexpand, " ");
  +				if(cmds[0] == "ifeq")
  +				{
  +					ifnest.push({current: "if", cond: cmds[1] == cmds[2]});
  +				}
  +				else if(cmds[0] == "else")
  +				{
  +					if(ifnest.lengh <= 1 || ifnest[ifnest.length - 1].current != "if") {throw new Error("parse error else");}
  +					ifnest[ifnest.length - 1].current = "else";
  +				}
  +				else if(cmds[0] == "endif")
  +				{
  +					if(ifnest.length <= 1) {throw new Error("parse error endif");}
  +					ifnest.pop();
  +				}
  +				else if(
  +					(ifnest[ifnest.length - 1].current == "if"   &&  ifnest[ifnest.length - 1].cond) ||
  +					(ifnest[ifnest.length - 1].current == "else" && !ifnest[ifnest.length - 1].cond))
  +				{
  +					exec(cmdexpand);
  +				}
  +			}
  +			if(ifnest.length != 1) {throw new Error("parse error ifeq/else");}
   			t = fs.FileExists(target) ? fs.GetFile(target).DateLastModified : 0;
   		}
   	}
  
positive.code: 					var param = command_split(xs[1], " ");
  					r.value += read(param[0], param[1]);
  				}
  				else
  				{
  					throw new Error("unknown command [" + s + "]");
  
negative.code: 		if(need)
  		{
  			if(opt.print) {WScript.Echo(target + " : ");}
  			var ifnest = [{current: "if", cond: true}];
  			for(var i = 0; i < p.commands.length; i++)
  			{
  				var cmd = p.commands[i];
  