は(最新の最後の)日付によるソートのファイルを一覧表示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
をシステムで使用できる日付のソート順に合わせる必要がある場合があります。
これは最善のアプローチではありませんが、出発点です。
あなたの質問はXMLとはまったく関係ありません。タグを削除しました。 XML拡張子を持つファイルを移動しようとしているからといって、XMLに関する質問はしません。スパムにはタグを付けないでください。 **あなたの投稿に実際に関連するタグのみ**を使用してください。タグ記述を使用する前に、そのタグ記述を読み取ることによって、それらが存在するかどうかを判断できます。タグには意味と関連性があります。なぜなら、各タグには、そのタグの内容と使用目的に関する説明が記載されているからです。ありがとう。 –
私はこれを考慮に入れます。ありがとう – Zaynqx
投稿しないでください[重複](http://stackoverflow.com/q/43493012/2152082)。 'copy'の代わりに' xcopy'を使います。指定された日付より新しいファイルだけをコピーする機能を持っています。 '/ m'パラメータもまた重要です。詳細は 'xcopy /?'を参照してください。 – Stephan