2016-04-07 35 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

而不是文件的時間,而使用存檔屬性(以前用於決定是否需要將文件存檔,因爲它被改變;每次操作系統都會寫入文件,它也會重置此屬性):

@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

其工作..謝謝 –