2017-12-22 15 views
0

私のフォルダは "C:\ sample \"としましょう。 .datファイルには2種類あります。.datファイル内の単語を検索してコピーする

一つは、他の一方が

Head #Index Name= "DbResultDataHeadStruct" TypeNo VarType = REG_DWORD 0x8 Data = "" TypeA VarType = REG_DWORD 0x8 Data = ""

です:

Head #Index Name= "DbResultDataHeadStruct" TypeNo VarType = REG_DWORD 0x8 Data = "" TypeB VarType = REG_DWORD 0x8 Data = ""

あなただけの違いを見るようにタイプAとタイプBです。 .datファイルのTypeAが "C:\ sample \ TypeA"に、TypeBが "C:\ sample \ TypeB"にある場合、ファイルをコピー/カットしたいと思います。このバッチファイルは常に新しいファイルを待ちます。 私はこのコードを以下に見つけましたが、私によればそれを修正できませんでした。たぶん役立つでしょう。

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

rem // Define constants here: 
set "PATTERN=*.dat" 
set "SOURCE=C:\sample\" 
set "TARGET=C:\sample\TypeA" 
set "STRING1=TypeA" 
set "STRING2=TypeB" 

pushd "%SOURCE%" && (
for /F "delims=" %%F in ('findstr /S /M /I /R /C:"\<%STRING1%\>" "%PATTERN%"') do (
    for /F "delims=" %%E in ('findstr /M /I /R /C:"\<%STRING2%\>" "%%F"') do (
     ECHO copy "%%E" "%TARGET%\%%~nxE" 
    ) 
) 
popd 
) 

endlocal 
exit /B 

答えて

0

findstrコマンドとmoveコマンドで解決策が見つかりました。

タイムアウトも追加しました。 10秒ごとにフォルダをチェックしています。

@echo OFF 
setlocal enableextensions disabledelayedexpansion 

set "source=C:\sample\*.dat" 
set "target=C:\sample\TypeA\OpMode" 
set "target2=C:\sample\TypeB\Error" 
set "searchString=OpMode" 
set "searchString2=Error" 

:loop 
set "found=" 
for /f "delims=" %%a in (' 
    findstr /m /i /l /c:"%searchString%" "%source%" 2^>nul 
') do (
    if not defined found set "found=1" 
    move "%%a" "%target%" 
) 



set "found=" 
for /f "delims=" %%a in (' 
    findstr /m /i /l /c:"%searchString2%" "%source%" 2^>nul 
') do (
    if not defined found set "found=1" 
    move "%%a" "%target2%" 
) 

timeout /T 10 

goto loop 
関連する問題