我*.oeaccount
在许多文件夹中有文件(XML 文件)。我想要一个批处理文件读取 XML 文件中的文本并重命名包含该文件的文件夹。
xml 文件包含类似于以下内容的文本:
<SMTP_Display_Name type="SZ">abc@cba.com</SMTP_Display_Name>
<SMTP_Email_Address type="SZ">abc@cba.com</SMTP_Email_Address>
<SMTP_Split_Messages type="DWORD">00000000</SMTP_Split_Messages>
</MessageAccount>
该批次必须abc@cba.com
在此行中找到并忽略所有其他邮件:
<SMTP_Email_Address type="SZ">abc@cba.com</SMTP_Email_Address>
行首有 4 个空格。
批处理必须提取电子邮件地址abc@cba.com
并重命名文件夹,每个文件夹都作为 XML 文件中的文本。
文件夹树是这样的:
- 文件夹/1.oeaccount
- 文件夹/2.oeaccount
- 文件夹/3.oeaccount
有人给了我这段代码,但它不起作用:
@echo off
setlocal
pushd "YourRootLocation"
set "search=<SMTP_Email_Address .*>[^ ][^ ]*@[^ ][^ ]*\.[^ ][^ ]*</SMTP_Email_Address>"
for /f "eol=: delims=" %%A in (
'findstr /srmbc:"%search%" file1.txt^|sort /r'
) do for /f "tokens=2 delims=<>" %%B in (
'findstr /rbc:"%search%" "%%A"'
) do if exist "%%A" for %%F in ("%%A\..") do if "%%~fF" neq "%CD%" (
echo ren "%%~fF" "%%B"
ren "%%~fF" "%%B"
)
popd