2013-03-15 89 views
-1

我是批处理脚本的新手,因此非常感谢您的帮助。将XML文件移动到相应文件夹的批处理脚本 - 文件夹名称写入XML

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

该文件夹的名字是一个数字,标签之间:

<DeliveryLocationNumber>123456789</DeliveryLocationNumber> 

,并在这种情况下,XML-将不得不被移动到文件夹C:\文档\ 123456789

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

在此先感谢

+0

标签被从原来的文章<“DeliveryLocationNumber”失踪> – 2013-03-15 10:00:08

+0

请在xml中显示更多内容文件。批量取决于输入模式。 – Endoro 2013-03-15 10:05:30

+1

你有什么想要达到这个目的? SO并不是让人们为你写代码的好办法,但是要解决你困在自己身上的问题。我鼓励你再次阅读FAQ。 – Joetjah 2013-03-15 10:17:52

回答

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 

只需删除ECHO关键字在:MoveMe的日常实际创建目标目录和移动文件。 ECHO确保所提议的行动仅报告给屏幕,而不是采取行动。

发生了什么事是:

对于每个.XML文件:

  1. 力被删除
  2. 检查包含</DeliveryLocationinNumber>
  3. 解析线成分隔的令牌,每个行的DESTDIR><
  4. 选择第二个标记并将其分配给DESTDIR
  5. 如果设置了DESTDIR(即,交货...线被发现)
  6. 然后调用例程传递:moveme的文件名中%%​​˚F作为参数#1

:moveme例程然后可以使用的DESTDIR%1和(第一个参数的值交付给:moveme)来构建相应的MD(使目录)的2> NUL抑制了任何可能的错误信息 - 如目录已经存在]和MOVE语句

+0

谢谢它的作品:) – 2013-03-19 08:50:31

相关问题