如何在批处理文件中告诉我根据 XML 的前缀或内容移动文件? [关闭]

问题描述 投票:0回答:0

我需要使用批处理文件按 XML 的内容和/或文件名组织 xml 文件。

如果文件名以 History 开头,那么我需要阅读文档末尾的字段以获取项目代码。

所有其他文件将以项目代码开头,并以破折号“-”分隔。这个文件我需要通过名称上的项目代码移动。

文件名以历史或项目代码开头。

History_01102023.xml (<ITEMCODE>I586CS</ITEMCODE>)
History_11122022.xml (<ITEMCODE>XDSH0YE87EN</ITEMCODE>)
I586CS-active.xml
I586CS-disabled.xml
XSO0GSOE-active.xml
XDSH0YE87EN-active.xml

我需要把它们如下:

I586CS\I586CS-active.xml
I586CS\I586CS-disabled.xml
I586CS\History_01102023.xml
XSO0GSOE\XSO0GSOE-active.xml
XDSH0YE87EN\History_11122022.xml
XDSH0YE87EN\XDSH0YE87EN-active.xml

我可以将历史文件移动到单个文件夹中,但我似乎无法按内容移动文件并按名称移动到文件夹

@ECHO OFF
SETLOCAL
FOR %%f IN (*.xml) DO (
 (SET destdir=)
 FOR /f "tokens=2delims=<>" %%i IN (
   'find "</ItemCode>" ^<%%f'
   ) DO SET destdir=%%i
 IF DEFINED destdir CALL :moveme %%f
)
GOTO :eof

:moveme
ECHO MD c:\docs\%destdir% 2>NUL
ECHO MOVE %1 c:\docs\%destdir%\
GOTO :eof
batch-file
© www.soinside.com 2019 - 2024. All rights reserved.