用于将XML文件移动到相应文件夹的批处理脚本 - 文件夹名称是用XML编写的

时间:2013-03-15 09:59:16

标签: batch-file

我是批处理脚本的新手,所以非常感谢任何帮助。

我必须创建一个将XML文件移动到相应文件夹的批处理 - 文件夹名称写在XML文件中。

文件夹名称是标签之间的数字:

<DeliveryLocationNumber>123456789</DeliveryLocationNumber>

在这种情况下,XML必须移动到文件夹C:\ docs \ 123456789

此外还有许多XML文档,所以我认为应该使用某种FOR函数来完成。

提前致谢

1 个答案:

答案 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文件:

  1. 强制删除DESTDIR的值
  2. 检查包含</DeliveryLocationinNumber>
  3. 的每一行
  4. 将该行解析为由><
  5. 分隔的令牌
  6. 选择第二个令牌并将其分配给DESTDIR
  7. 如果设置了DESTDIR(即发现了送货行......)
  8. 然后调用例程:moveme将%% f中的文件名作为参数#1
  9. 传递

    然后:moveme例程可以使用DESTDIR%1(传递给:moveme的第一个参数)的值来构建适当的MD(make目录)[ 2&gt; NUL 会抑制任何潜在的错误消息 - 例如目录已存在]和MOVE语句