群里的那句:- if not "%s%"=="w" echo 1>nul|echo err
复制代码 如果,%s% 是w 就执行下一句,因为这一句是 if not
如果不是, if not 成立, 执行 ehco 1>nul 并传递给 echo err。 | 前后的命令是同步执行的,当有不同步时(如|前面是dir 之类的),先等待前面执行完才传递给后面。所以 echo 1>nul|echo err 就相当于 echo err
比如:- if not "%s%"=="w" echo 1|echo err
复制代码 同样,如果是w 还是不执行。
如果不是,执行 echo 1|echo err。 | 可以理解为把前一句的结果作为后一句的参数,虽然标准说法是“把前一句的输出作为后一句的输入”。例如 del 需要确认时,format ,cacls 等。所以 1 被传递 给 echo err。 那么 echo err 接受到了 1,实际应该还是 echo err。
你提到的:- if "a"=="b" echo 1>nul | echo err
复制代码 首先 if 不成立,那么后面的就无法执行了
PS:对于 && || 判定应该是 errorlevel 而非句柄
[ 本帖最后由 bluewing009 于 2011-2-18 10:43 编辑 ] |