2013-03-15 83 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

相關問題