NET使用和错误级别问题(批处理文件)

时间:2016-02-18 22:25:38

标签: batch-file dictionary

所以我需要映射一个驱动器,复制一些文件并断开驱动器......问题是我们不知道哪些计算机会有不同的密码...所以我正在尝试使用它,但它似乎无法识别无效密码的错误。

任何帮助将不胜感激。

net use Z: "\\POS1\c$\PATH" %password% /user:%username%
IF ERRORLEVEL 0 goto copy
IF ERRORLEVEL 1 goto retry1
:retry1
net use Z: "\\POS1\c$\PATH" %password2% /user:%username2%
IF ERRORLEVEL 0 goto copy
IF ERRORLEVEL 1 goto retry2
:retry2
net use Z: "\\POS1\c$\PATH" %password3% /user:%username3%
IF ERRORLEVEL 0 goto copy
IF ERRORLEVEL 1 goto POS2
:copy
xcopy /y "c:\avi\aaaaaa.ini" "Z:\"
xcopy /y "c:\avi\aaaaaa.avi" "Z:\"
net use Z:  /delete

:POS2

3 个答案:

答案 0 :(得分:1)

某些程序和命令会返回errorlevel1以外的0。它们可能是负数,有数千个等,所以如果net命令返回errorlevel个,假设10为无效密码,它将跳过,因为它不是{{ 1}}或0

大多数情况下,

1

应该工作。

使用变量的示例;

if errorlevel 0 (
    goto :copy
) else (
    goto :retry1
)

rem Or, a single line version;

if errorlevel 0 (goto :copy) else (goto :retry)

这是为了我对for循环的纯粹快乐。没有逻辑推理,但它显示何时可以使用if %errorlevel% equ 0 ( echo No errors detected! ) else ( echo An error occured: [%errorlevel%] )

!errorlevel!

答案 1 :(得分:1)

if errorlevel 0没有意义,因为它意味着错误级别0和上面的所有错误级别。

如果要检查错误级别0,则必须编写:if not errorlevel 1 (and above)

答案 2 :(得分:0)

......的含义存在巨大差异。

IF %ERRORLEVEL%==0 yourCommand

table = bq.Table(bq_table_ref)
job_id = table.extract(destination=gs_object, format='avro')
我也偶然发现了它。

在第一种情况下,ERRORLEVEL就像一个关键字或函数,你放置" 0"作为一个参数,只有成为" true"如果真正的ErrorLevel返回值0或更高。对于我和任何曾经学过适当的脚本语言并且容易堕落的人来说,这是违反直觉的。

虽然第二个版本是简单的STRING COMPARISON。程序执行时自动将环境变量%ERRORLEVEL%设置为String,例如' 0'你可以将它与你自己的String进行比较,比如0.如果双方/字符串相同,它只匹配。

即使这个案例已经解决了,我认为它有助于其他人理解或对其进行另一种解释。