-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. 2 番目のトークンを選択して、DESTDIR
  5. 設定されている場合DESTDIR(つまり、Delivery... 行が見つかった場合)
  6. :moveme次に、パラメータ #1 として %%f のファイル名を渡すルーチンを呼び出します

次に、:movemeルーチンはDESTDIRandの値%1( に渡される最初のパラメーター:moveme) を使用して、適切な MD (ディレクトリを作成) を作成できます [ 2>NULは潜在的なエラー メッセージを抑制します - ディレクトリが既に存在するように] および MOVE ステートメント

于 2013-03-15T10:52:33.843 に答える