我是批处理脚本的新手,所以非常感谢任何帮助。
我必须创建一个将XML文件移动到相应文件夹的批处理 - 文件夹名称写在XML文件中。
文件夹名称是标签之间的数字:
<DeliveryLocationNumber>123456789</DeliveryLocationNumber>
在这种情况下,XML必须移动到文件夹C:\ docs \ 123456789
此外还有许多XML文档,所以我认为应该使用某种FOR函数来完成。
提前致谢
答案 0 :(得分:1)
@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>
>
或<
DESTDIR
DESTDIR
(即发现了送货行......):moveme
将%% f中的文件名作为参数#1 然后:moveme
例程可以使用DESTDIR
和%1
(传递给:moveme
的第一个参数)的值来构建适当的MD(make目录)[ 2&gt; NUL 会抑制任何潜在的错误消息 - 例如目录已存在]和MOVE语句