(net此时出乎意料

赛义德·阿萨德·海德尔

我正在尝试在需要时将批处理文件写入映射驱动器,但是每当我运行它时,我都会收到错误消息:

(net was unexpected at this time

@echo off
SET /P Site=Which site you want to map please type SITE CODE? 
IF %Site% == BPT ( SET /P Drive= C B G?
        IF  %Driv% == C (net use * \\test1\common)
        IF  %Driv% == G (net use * \\test1\global)
        IF %Drive% == B (net use * \\test1\common && net use * \\test1\global))
德本纳姆

除了拼写错误的 DRIV(vs DRIVE)之外,您还有一个延迟扩展问题。

您的整个 IF 构造被视为一个单一的复合语句,在执行任何代码之前会一次性解析所有语句。对于任何带括号的代码块都是如此。

百分比扩展发生在语句完全解析之前,因此 DRIVE 尚未定义,您的第二个 IF 语句被读作

IF   == C (net use * \\test1\common)

您应该能够看到这如何导致语法错误。

一种解决方案是使延迟扩展,并使用!drive!来代替%drive%这样整个语句都被解析,然后在每个命令执行之前扩展变量。

@echo off
setlocal enableDelayedExpansion
SET /P Site=Which site you want to map please type SITE CODE? 
IF %Site% == BPT ( 
  SET /P Drive= C B G?
  IF !Drive! == C net use * \\test1\common
  IF !Drive! == G net use * \\test1\global
  IF !Drive! == B net use * \\test1\common && net use * \\test1\global
)

另一种选择是使用 GOTO 或 CALL 来消除大括号块,然后您可以安全地使用百分比扩展

@echo off
SET /P Site=Which site you want to map please type SITE CODE? 
IF %Site% neq BPT goto NotBPT 
SET /P Drive= C B G?
IF %Drive% == C net use * \\test1\common
IF %Drive% == G net use * \\test1\global
IF %Drive% == B net use * \\test1\common && net use * \\test1\global
:NotBPT

另一种选择是使用CHOICE而不是SET /P然后使用IF ERRORLEVEL来测试返回的错误级别,而无需变量扩展。请注意,if errorlevel 3如果错误级别大于或等于 3 则为 TRUE。因此,IF 测试必须按数字降序进行。

@echo off
SET /P Site=Which site you want to map please type SITE CODE? 
IF %Site% == BPT ( 
  choice /c CBG
  if errorlevel 3 (
    net use * \\test1\global
  ) else if errorlevel 2 (
    net use * \\test1\common
    net use * \\test1\global
  ) else if errorlevel 1 (
    net use * \\test1\common
  )
)

CHOICE 优于 SET /P 的一个优点是您不必担心用户输入错误的响应 - CHOICE 强制正确响应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

(此时出乎意料的批次

来自分类Dev

cmd错误:此时goto出乎意料

来自分类Dev

此时,DO出乎意料。错误255

来自分类Dev

图像在此时出乎意料

来自分类Dev

批处理文件说 ( 在 if 期间此时出乎意料

来自分类Dev

错误-“此时Goto出乎意料”,当留空字段并按Enter时-批处理

来自分类Dev

此时我的批处理文件中goto出乎意料

来自分类Dev

Sonarqube 和 Jenkins 安装在 windows 64 位上——此时 jre 出乎意料

来自分类Dev

“ Hello,World!”出乎意料的困难

来自分类Dev

R:lubridate返回NA –出乎意料

来自分类Dev

Highcharts热图的出乎意料的结果

来自分类Dev

原型之间共享出乎意料的价值

来自分类Dev

可调节的列数出乎意料

来自分类Dev

杰森出乎意料的角色

来自分类Dev

数据正确,但查询结果出乎意料

来自分类Dev

JUnit异常测试失败(出乎意料)

来自分类Dev

结果出乎意料的Modulo项目

来自分类Dev

Metaphone算法出乎意料的结果

来自分类Dev

多态性出乎意料的结果

来自分类Dev

&在这个时候出乎意料

来自分类Dev

简单代码出乎意料的结果

来自分类Dev

这次蝙蝠错误集出乎意料

来自分类Dev

可调节的列数出乎意料

来自分类Dev

Bash 脚本的行为出乎意料/奇怪

来自分类Dev

每次都出乎意料的结果

来自分类Dev

尝试在批处理脚本中比较2个字符串时出现“ Windows此时出乎意料”错误

来自分类Dev

竖线字符“ |” 在这个时候是出乎意料的

来自分类Dev

为什么我的代码结果出乎意料?

来自分类Dev

TSQL“滞后”分析功能-出乎意料的糟糕性能