|
|
发表于 2025-7-12 11:55:26
|
显示全部楼层
本帖最后由 aloha20200628 于 2025-7-12 15:40 编辑
回复 8# Shuye
首先这是由于 '预处理' 的结果》即复合语块(被圆括号包裹的一组代码或被 & 链接的一组代码)被解释执行前会对其内的所有 %var% 变量预先赋值。因此,8楼代码 if 体内的 %errorlevel% 总是 if 之前的取值。
其次再来谈 if 体内有效采用错误返回值的方法》
一。为直接规避预处理拦截,采用 !errorlevel! 肯定是有效的。
二。采用保留关键词 errorlevel 而非 !errorlevel! 变量,示例代码如下。
三。采用 &&和 || 运算符,示例如下。
但如一些老帖中所述,被多年的实用结果验证是第一种方法的灵活性和可靠性更好,因而被优先推荐...
备注》从6楼英文老帖挂表中查有 copy 命令返回值类型,当目标文件不存在或参数错误其返回值=1,其余均返回零。
方法二
- @echo off & set "tar=3"
- if defined tar (
- copy /y 1.txt 2.txt>nul 2>nul
- if errorlevel 1 (echo,复制失败) else echo,复制成功
- )
- pause&exit/b
复制代码 方法三
- @echo off & set "tar=3"
- if defined tar (
- copy /y 1.txt 2.txt>nul&&echo,复制成功||echo,复制失败
- )
- pause&exit/b
复制代码 |
|