繁体   English   中英

CMD文件-延迟变量扩展

[英]CMD file - delayed variable expansion

我正在编写一个CMD /批处理文件(在Win-7 cmd.exe下运行),并且似乎挂在延迟的变量扩展上。

我正在使用以下形式的文本文件输入:

9 .CN = ISRJX.OU = Linc.OU = thisco.O = UCOM.T = UCOM。 13年8月20日

10 .CN = FXXLISHER.OU = Linc.OU = thisco.O = UCOM.T = UCOM。 13年10月13日

11 .CN = QXX004F.OU = Linc.OU = thisco.O = UCOM.T = UCOM。 13年10月14日

12 * .CN = QXX1001OB.OU = Linc.OU = thisco.O = UCOM.T = UCOM。 13年10月15日

作为“ inputfile.txt”中的内容。 目的是在此过程中提取“ .CN =“之后的第一个单词。

请注意,我无法根据“ CN =”之前的字符数进行剥离,因为字符数会有所不同。

我的脚本是:

setlocal enableextensions enableDelayedExpansion
REM @echo off
for /f "tokens=3 delims==." %%a in (inputfile.txt) do (
set "acct =%%a"
echo. %%a,%acct%
)
endlocal

我已经尝试了引号,!,%等的每组组合,并且启用和禁用了延迟扩展,但仍然无法正常工作。 在大多数情况下,当我使用时! 我最终回响了实际的!。 "echo !acct!" 将回显实际的文本“!acct!”。

在这里和其他地方,我已经阅读了许多有关延迟变量扩展的示例和答案。 在这个示例中,我只是想不通如何解决该问题,在该示例中,我希望“ acct”在循环中扩展。

怀疑这是一个简单的标点问题,但是我没有主意。 运行此命令时,我看到acct设置为%% a的值,但是当它回显时,显然它不会扩展为新值-而是它将回显先前设置的值,或者为空。

我也尝试过disabledelayedexpansion ,它对我的​​结果没有影响(包括当我使用!acct!而不是%acct%

删除acct变量名称后的空格并使用! 分数。

@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /f "tokens=3 delims==." %%A in (inputfile.txt) do (
    set "acct=%%A"
    echo. %%A,!acct!
)
endlocal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM