我正在编写一个批处理文件来升级一些系统。我需要从一个xml文件中解析出日期,并将其保存以便稍后在文件中使用。日期的格式是yyyy\MM\dd。
目前为止,我的代码如下:
@echo off
setLocal DisableDelayedExpansion
for /f "tokens=* delims= " %%G in (ConnectionManagement.xml) do (
set str=%%G
set mydate=%%G
echo got-
echo %%G
echo %mydate%
PAUSE
ECHO %mydate%|findstr /R /C:[0-9][0-9][0-9][0-9]\\[0-9][0-9]\\[0-9][0-9] > nul
IF ERRORLEVEL 0 goto valueok
)
echo DONE
PAUSE
goto end
:valueok
echo VALUEOK
:end
PAUSE
不幸的是,它错误地将xml头识别为有效日期;但我认为这与ErrorLevel被重置有关。mydate没有被设置,并且它将空变量mydate识别为匹配(!!??)。输出结果如下:
got-
<?xml version="1.0" encoding="utf-8"?>
ECHO is off.
Press any key to continue . . .
VALUEOK
Press any key to continue . . .
对于解决问题已经感到相当绝望了。谢谢...
%mydate%
将仅被替换为循环之前变量所具有的值。请改用延迟扩展和!mydate!
(参见help set
)。 - Joey