-1

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

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

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

<DeliveryLocationNumber>123456789</DeliveryLocationNumber>

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

还有很多 XML 文档,所以我认为这应该通过某种 FOR 函数来完成。

提前致谢

4

1 回答 1

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. 将该行解析为由>or分隔的标记<
  4. 选择第二个令牌并将其分配给DESTDIR
  5. 如果DESTDIR已设置(即找到 Delivery... 行)
  6. 然后调用将:moveme%%f 中的文件名作为参数 #1 传递的例程

然后:moveme例程可以使用DESTDIRand的值%1(传递给 的第一个参数:moveme)来构建适当的 MD(生成目录)[ 2>NUL抑制任何潜在的错误消息 - 就像目录已经存在] 和 MOVE 语句

于 2013-03-15T10:52:33.843 回答