批量检查单个文件是否被修改
如果现在修改/创建单个文件(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格式。
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
谢谢, 但不幸的是,我不是一个程序员,我不知道在哪里把文件名检查,然后启动另一个程序。 – 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
请加4位代码行 – wimh 2010-08-01 17:23:40
输出的面前: CDATE =“” mdate =“”当前目录= C:\ 和myprogram.bat也开始如果该文件是旧 – Todd 2010-08-01 18:18:46
可能你有不同的区域设置,然后我有。你能在命令提示符中输入'echo'%date%“',并在这里发布结果吗? – wimh 2010-08-01 20:09:36
结果是:“01/08/2010” – Todd 2010-08-01 20:38:35