2017-04-20 7 views
0

特定のXMLデータをあるフォルダから別のフォルダに抽出しようとしています。最新の日付でファイルを抽出する

問題は最新のものだけです。現在の日付で最新のXMLファイルを判断する必要があります。次のように2017年4月20日

マイscirpt:たとえば、今日は

-----------------test.bat-------------- 
@echo off&pushd \\server5\Datapool 
for /f %%a in ('dir /b ^| find ".xml"') do for /f %%A in ('type %%a ^| find /I "Marc" ^| find /I "BENZ231"') do copy %%a C:\Users\folder1 
-----------------test.bat-------------- 

だから私の目標は、唯一の「マーク」+「BENZ231」と一致する場合、別のフォルダに最新のXMLファイルを抽出することです。

btw: "marc"と "benz231"の両方の文字列が同じ行にあります。

+3

あなたの質問はXMLとはまったく関係ありません。タグを削除しました。 XML拡張子を持つファイルを移動しようとしているからといって、XMLに関する質問はしません。スパムにはタグを付けないでください。 **あなたの投稿に実際に関連するタグのみ**を使用してください。タグ記述を使用する前に、そのタグ記述を読み取ることによって、それらが存在するかどうかを判断できます。タグには意味と関連性があります。なぜなら、各タグには、そのタグの内容と使用目的に関する説明が記載されているからです。ありがとう。 –

+0

私はこれを考慮に入れます。ありがとう – Zaynqx

+0

投稿しないでください[重複](http://stackoverflow.com/q/43493012/2152082)。 'copy'の代わりに' xcopy'を使います。指定された日付より新しいファイルだけをコピーする機能を持っています。 '/ m'パラメータもまた重要です。詳細は 'xcopy /?'を参照してください。 – Stephan

答えて

0

は(最新の最後の)日付によるソートのファイルを一覧表示dirコマンドの/o:dスイッチ

rem -----------------test.bat-------------- 
@echo off & SetLocal EnableDelayedExpansion 
set "file=" 
set "srcFolder=\\server5\Datapool" 
set "dstFolder=C:\Users\folder1" 

rem language independent time 
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "Tm=%%a" 
set "today=%Tm:~0,4%%Tm:~4,2%%Tm:~6,2%" 

pushd "%srcFolder%" 
for /f "usebackq tokens=*" %%a in (`dir /b /o:d *.xml`) do (
    set "fileTime=%%~ta" 
    rem set "fileTime_spanish=!fileTime:~6,4!!fileTime:~3,2!!fileTime:~0,2!" 
    set "fileTime_english=!fileTime:~6,4!!fileTime:~0,2!!fileTime:~3,2!" 
    if "!fileTime_english!" equ "%today%" (
    findstr /irc:"marc.*BENZ231" /c:"BENZ231.*marc" %%a && copy "%%a" "%dstFolder%" 
) 
) 
popd 
EndLocal 
exit/B 
rem -----------------test.bat-------------- 

注意をしてみてください。 forループを変更して、dirワイルドカードと一致するすべてのファイルにfile変数を設定し、文字列をfindstrに渡しました。 dirには日付でソートされたファイルがリストされているため、file変数には両方の条件に従って最新のファイルが格納されます。

EDITED 25/04/2017

注今filetime_xxxとしてdelayed expansionの使用は、ブロック(括弧内の何か)の内部に更新され、今や!変数名を囲むなる可変膨張が遅れています。

filetime_xxxをシステムで使用できる日付のソート順に合わせる必要がある場合があります。

これは最善のアプローチではありませんが、出発点です。

+1

スペースで可能なファイル名もサポートするには、forオプションに 'delims ='または 'tokens = *'を追加し、 ''%file% "' – LotPings

+0

@LotPingsあなたが正しいと二重引用符を付ける必要があります!私は自分のコンピュータの前にいませんでした。投稿は編集済みです。 – elzooilogico

+0

ねえ!ご返信ありがとうございました。ご返信ありがとうございます。それは私のために途中で動作しますが、1つのファイルだけをコピーします。 Marc + Benz231の新しいものすべてをコピーする必要があります。私はsthをやっていますか?違う?編集:私はpropably自分自身を正しい方法を説明していない。私は、上記の属性が一致する場合、今日からすべてのファイルをコピーしたいと思います。申し訳ありませんが明確ではありません。 – Zaynqx

関連する問題