批量检查单个文件是否被修改

问题描述:

如果现在修改/创建单个文件(example.avi)并且如果答案为是,则必须在外部目录中检查另一批次或退出。批量检查单个文件是否被修改

我发现了几篇文章,但我无法从我自己制作这个批处理文件。

我希望有人能帮助我。 预先感谢您。

您发现的脚本似乎对我有效,如果您在正确的位置开始换行。 您可以在if语句之前添加echo语句以查看cdate和mdate是否具有正确的值。 并检查目录中是否存在myprogram.bat。 这是一个修改后的版本,显示了这一点。你可以试试这个,如果它不起作用发布输出?

@echo off 
for %%F in (C:\TEST\myfile.avi) do (for /F %%D in ("%%~tF") do (set mdate=%%D)) 
for /F "tokens=2" %%D in ('date/t') do set cdate=%%D 
echo cdate="%cdate%" mdate="%mdate%" current dir=%cd% 
if "%cdate%"=="%mdate%" going to start myprogram.bat 
if "%cdate%"=="%mdate%" start myprogram.bat 
pause 

编辑 这里是一个独立运作的区域设置一个版本。它基于this解决方案。

@echo off 
reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f > NUL 
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyMMdd" /f > NUL 
for %%F in (C:\TEST\myfile.avi) do (for /F %%D in ("%%~tF") do (set mdate=%%D)) 
for /F "tokens=1" %%D in ("%date%") do set cdate=%%D 
echo cdate="%cdate%" mdate="%mdate%" current dir=%cd% date="%date%" 
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f > NUL 
if "%cdate%"=="%mdate%" start myprogram.bat 

它首先在注册表中对shortdate格式进行备份。然后它用yyMMdd替换它。现在它查找文件的修改日期和当前日期。在比较日期之前,它会恢复shortdate格式。

+0

输出的面前: CDATE =“” mdate =“”当前目录= C:\ 和myprogram.bat也开始如果该文件是旧 – Todd 2010-08-01 18:18:46

+0

可能你有不同的区域设置,然后我有。你能在命令提示符中输入'echo'%date%“',并在这里发布结果吗? – wimh 2010-08-01 20:09:36

+0

结果是:“01/08/2010” – Todd 2010-08-01 20:38:35

DIR %1 | FIND /I "%1" > ~ISMODIF.TMP 
ECHO.>> ~ISMODIF.TMP 
TYPE ~ISMODIF.TMP | TIME | FIND /I "%1" > ~ISMODIF.BAT 
ECHO SET CHKDATE=%%4> ENTER.BAT 
CALL ~ISMODIF.BAT 
DIR ~ISMODIF.BAT | FIND /I "~ISMODIF.BAT" > ~ISMODIF.TMP 
ECHO.>> ~ISMODIF.TMP 
TYPE ~ISMODIF.TMP | TIME | FIND /I "~ISMODIF.BAT" > ~ISMODIF.BAT 
ECHO SET NOWDATE=%%4> ENTER.BAT 
CALL ~ISMODIF.BAT 
IF "%NOWDATE%"=="%CHKDATE%" ECHO %1 was created or modified today 

http://www.robvanderwoude.com/bht.php

+0

谢谢, 但不幸的是,我不是一个程序员,我不知道在哪里把文件名检查,然后启动另一个程序。 – Todd 2010-07-30 16:06:29

我发现这个,但不能在我的Win XP上运行。

@echo off 
for %%F in (C:\TEST\myfile.avi) do (for /F %%D in ("%%~tF") do (set mdate=%%D)) 
for /F "tokens=2" %%D in ('date/t') do set cdate=%%D 

if "%cdate%"=="%mdate%" start myprogram.bat 
+0

请加4位代码行 – wimh 2010-08-01 17:23:40