在下面的batch
文件中,我试图检查一个目录,该目录仅包含文本文件(不包含子目录),以查找添加的新文件。下面的脚本执行,但始终显示New file detected
。最终,我将其添加到启动菜单中,以便在登录时检查目录。也许有更好的方法,但是我对batchfiles
不太熟悉。谢谢:)。
批处理
@echo off
:START
cls
set /a Old = 0
set /a New = 0
echo Checking for new annotated files...
for /f "tokens=*" %%P IN ('dir "path/to/directory" /A /b') do (set /a Old += 1)
set Old
echo Checking for new files..
for /f "tokens=*" %%P IN ('dir "path/to/directory" /A /b') do (set /a New += 1)
set New
goto COMPARE
:COMPARE
if %New% gtr %Old% goto NEWF (
goto NEWF
)
else (
goto OLDF
)
:NEWF
echo New File Detected.
echo.
pause
:OLDF
echo Nothing New.
echo.
pause
答案 0 :(得分:1)
将值存储在文件old.txt中。如果该文件存在,则在其中获取值并循环执行所有.txt文件并测试该值。这是经过修改的代码:
@echo off&cls
setlocal enabledelayedexpansion
:: Default value
set "New=0"
set "old=0"
:: If exist old.txt get the real value
if exist old.txt set /p Old=<old.txt
echo Checking for new annotated files...
::Count of the txt files
for /f %%$ IN ('dir *.txt') do set /a New+=1
:: Update the value of the old.txt for the next check
echo !New!>old.txt
:: Testing the 2 values
if !New! gtr %Old% (goto NEWF) else (goto OLDF)
:NEWF
echo New File Detected.
echo.
pause
exit/b
:OLDF
echo Nothing New.
echo.
pause
exit/b
答案 1 :(得分:1)
由于您要查看是否在目录中创建了任何新文件,因此可以使用xcopy
检查x
日期之前的文件。由于您没有在帖子中发布日期或时间,因此我认为这是当前日期。
您不需要检查指定日期之前的文件,因为您不需要比较它们。您需要做的就是检查返回为“ New”的文件是否少于1。这可以通过以下操作完成:
if %New% gtr 0 (goto NEWF) else (goto OLDF)
如果以后希望搜索子目录,可以将/S
开关与 xcopy /L /S /D:
一起使用。
对于您拥有的pause语句,如果脚本继续运行,您将遇到问题(因为它无处可去)。要解决此问题,您只需使用goto :eof
退出脚本即可。使用echo(
代替echo.
@ECHO OFF
set /a New = 0
:: Gather & edit the date for xcopy.
SET CurrentDate=%date%
SET CurrentDate=%CurrentDate:/=-%
SET CurrentDate=%CurrentDate:* =%
:: Check for files created today.
for /f "delims=" %%i in ('xcopy "path/to/directory" /L /I /D:%CurrentDate%') do (set /a New+=1)
set /a New-=1
goto COMPARE
:COMPARE
if %New% gtr 0 (goto NEWF) else (goto OLDF)
:NEWF
echo New File Detected.
echo(
pause
goto :eof
:OLDF
echo Nothing New.
echo(
pause
goto :eof