为什么我的" Else"不在我的批处理文件中工作?

时间:2018-01-25 14:52:45

标签: batch-file for-loop if-statement

这应该很简单但是我现在真的很困惑,我无法弄清楚原因。我正在阅读与批处理文件位于同一位置的文本文件中的URL,但我无法获得该部分" Else(ECHO DOMAIN)"上班。 (ECHO DOMAIN和GROUP)可以正常工作。

" Upgrade.txt"中的网址以下列格式提供给我:

* CLIENT01 - 帐户名称(实时)网站网址(https://address1.ourdomain.co.uk

这是我无法开始工作的批处理文件:

@ECHO OFF
setlocal enabledelayedexpansion
PUSHD "%~dp0"

for /f "tokens=2 delims=/." %%d IN (Upgrade.txt) do (
        SET "Domain=%%d"
    )

for /f "tokens=4 delims=/)" %%g IN (Upgrade.txt) do (
    SET "Group=%%g"
    IF "!Group!" NEQ "" (ECHO DOMAIN and GROUP) ELSE (ECHO DOMAIN)  
)

ECHO Domain=!Domain!
ECHO Group=!Group!

PAUSE

运行它会得到结果

  

域名=地址1   基团=

但应该是:

  

DOMAIN   Domain = address1
  基团=

但是,如果我更改" Upgrade.txt"这种格式:

* CLIENT01 - 帐户名称(实时)网站网址(https://address1.ourdomain.co.uk/address2

运行它会得到正确的结果:

  

DOMAIN和GROUP
  Domain = address1
  基团= 1地址

为什么"Else (ECHO DOMAIN)"没有被打印而且两个ECHO都被完全忽略了? (Echo将被命令替换,因此我需要知道每个部分都被正确调用,底部的Echos只是为了证明自己的值是什么,所以我知道应该调用什么动作)

非常感谢提前

1 个答案:

答案 0 :(得分:1)

for /f "tokens=1,4 delims=/)" %%f IN (Upgrade.txt) do (

由于数据不会产生%%g(第四个标记),因此for会执行该行的代码。通过选择另一个将%%f存在的令牌来修复它,然后%%g将为空。

BTW -

SET "Group=%%g"
IF "!Group!" NEQ "" (ECHO DOMAIN and GROUP) ELSE (ECHO DOMAIN)  

可能是

IF "%%g" NEQ "" (ECHO DOMAIN and GROUP) ELSE (ECHO DOMAIN)  

SET "Group=%%g"
IF not defined Group (ECHO DOMAIN and GROUP) ELSE (ECHO DOMAIN)  

但更好

IF "%%g" EQU "" (ECHO DOMAIN) ELSE (ECHO DOMAIN and GROUP)  

消除双重否定。