2016-04-07 14 views
-4

ファイルの変更日時を継続的にチェックするバッチファイルを作成しようとしています。それが変更された場合は、「ファイルが変更されました」というメッセージボックスを表示します。私は単純なコードを持っており、それが実行中のいくつかのエラーを示す。..バッチファイルを使用して変更したファイルを継続的にチェックする

@echo off 
setlocal 
set FileName=F:\test\tester.txt 
set FileTime=0 
:loop 
for %%X in (%FileName%) do (
    if %FileTime% NEQ %%~tX (
     echo file modified 
    ) else (
    echo no change) 
set FileTime=%%~tX 
) 
ping -n 10 localhost >nul 2>nul 
goto :loop 
pause 
+2

実際に質問がありますか? –

+1

私たちはコード作成サービスではありません。少なくともそれを試してみて、何か問題があれば新しい質問をしてください(必要ならば[ヘルプ]と​​[mcve]を見てください)。 – cybermonkey

+1

は、アーカイブ属性のジョブとして発音します。 'attrib /? 'を参照してください – Stephan

答えて

1

最終コード。あなたのサポートに感謝します。

@echo off 
    setlocal enableextensions disabledelayedexpansion 
    for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do   
set "dt=%%a" 
set "td.YY=%dt:~2,2%" 
set "td.YYYY=%dt:~0,4%" 
set "td.MM=%dt:~4,2%" 
set "td.DD=%dt:~6,2%" 

set "filename=%td.MM%%td.DD%%td.YY%.txt 
:loop 
for %%i in (%filename%) do (
     echo %%~ai|find "a" >nul && (
     cscript MessageBox.vbs "Today's Schedule Changed. Modified Time: %time%. Please Check AVScheduler ON or OFF." 
     attrib -a %%i 
) || (
rem echo no change 
) 
) 
timeout 1 >nul 
goto :loop 
3

代わりに、ファイルの時間で、それが変更されたため、ファイルをアーカイブする必要がある場合は、むしろ(歴史的に決定するために使用されるアーカイブ属性を使用します; OSはファイルに書き込みを行うたびにこの属性をリセットします)。

@echo off 
set filename=tester.txt 
:loop 
for %%i in (%filename%) do (
    echo %%~ai|find "a" >nul && (
    echo %filename% was changed %time% 
    attrib -a %%i 
) || (
    rem echo no change 
) 
) 
timeout 1 >nul 
goto :loop 
+0

その作業..ありがとう –

関連する問題