我是批处理脚本的新手,因此非常感谢任何帮助。
我必须创建一个将 XML 文件移动到相应文件夹的批处理 - 文件夹名称写在 XML 文件中。
文件夹名称是标签之间的数字:
<DeliveryLocationNumber>123456789</DeliveryLocationNumber>
在这种情况下,必须将 XML 移动到文件夹 C:\docs\123456789
还有很多 XML 文档,所以我认为这应该通过某种 FOR 函数来完成。
提前致谢
我是批处理脚本的新手,因此非常感谢任何帮助。
我必须创建一个将 XML 文件移动到相应文件夹的批处理 - 文件夹名称写在 XML 文件中。
文件夹名称是标签之间的数字:
<DeliveryLocationNumber>123456789</DeliveryLocationNumber>
在这种情况下,必须将 XML 移动到文件夹 C:\docs\123456789
还有很多 XML 文档,所以我认为这应该通过某种 FOR 函数来完成。
提前致谢
@ECHO OFF
SETLOCAL
FOR %%f IN (*.xml) DO (
(SET destdir=)
FOR /f "tokens=2delims=<>" %%i IN (
'find "</DeliveryLocationNumber>" ^<%%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
只需删除 :moveme 例程中的 ECHO 关键字即可实际创建目标目录并移动文件。ECHO 确保建议的操作仅报告给屏幕,而不是执行。
正在发生的事情是:
对于每个 .XML 文件:
DESTDIR
删除的值</DeliveryLocationinNumber>
>
or分隔的标记<
DESTDIR
DESTDIR
已设置(即找到 Delivery... 行):moveme
%%f 中的文件名作为参数 #1 传递的例程然后:moveme
例程可以使用DESTDIR
and的值%1
(传递给 的第一个参数:moveme
)来构建适当的 MD(生成目录)[ 2>NUL抑制任何潜在的错误消息 - 就像目录已经存在] 和 MOVE 语句