[英]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%
。
@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.