windows - 如果 set /a 失败,如何设置变量?
问题描述
我想检查我的 set /a 语句是否因Missing operator.
错误而失败。我当前的批处理文件,只设置变量。这个批处理文件是为了测试我检查我的 set /a 语句是否因Missing operator.
错误而失败的理论。
@echo off & @setlocal
set "rndtest=%random% %%2+1"
if "%rndtest%" == "1" set test=1()1
) else (
set test=1+1+1+1+1
)
set "test=1+1+1+1+1+1+1+1+1"
set /a "test_123_abc=%test%"
echo %test_123_abc%
我尝试了以下解决方案,但无济于事:
@echo off & @setlocal
set "rndtest=%random% %%2+1"
if "%rndtest%" == "1" set test=1()1
) else (
set test=1+1+1+1+1
)
set /a "test_123_abc=%test%" | find "Missing operator."
if %errorlevel% equ 0 echo Test failed!
) else (
echo Test didn't fail!
)
exit /b 0
这总是评估为Test didn't fail.
它应该评估为两个之一,但它总是评估为Test didn't fail.
解决方案
如果您使用该Set /A
语句并收到一条Missing operator
消息,通常会输出为 StdErr,因此可以使用条件运算符轻松确定,&&
并且||
。
示例 1 (仅重定向 StdErr):
Set /A test_123_abc=1()1 2>NUL&&(Echo Test passed.)||Echo Test failed.
示例 2 (重定向 StdErr 和 StdOut):
Set /A test_123_abc=1()1 >NUL 2>&1&&(Echo Test passed.)||Echo Test failed.
我已将 StdErr 重定向到 NUL 设备,以防止返回任何错误消息,并使用条件&&
来表示前一个指令的成功返回和前一个指令||
的不成功返回。
推荐阅读
- scala - 如何创建如下 Spark DF
- python - 尽管屏蔽了对 keras 中零填充小批量 LSTM 训练的支持,但预测为零
- java - 如何修复 HTML 片段中悬挂的 html 标签?
- java - 使用正则表达式拆分字母数字字符串不起作用
- r - 根据另一列条件替换一个列向量
- ecmascript-6 - ESLINT:params.majorVersion = m[1]; => 使用数组解构。(首选解构)
- javascript - 用于实时验证电话号码的正则表达式,包括 x
- python - 如何根据数据自动更改图表标题
- java - 如何在使用 java opencsv 阅读时跳过 csv 标头中的附加 (,) 逗号
- php - 文件上传到目录不起作用,没有文件