这应该很简单但是我现在真的很困惑,我无法弄清楚原因。我正在阅读与批处理文件位于同一位置的文本文件中的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只是为了证明自己的值是什么,所以我知道应该调用什么动作)
非常感谢提前
答案 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)
消除双重否定。