如何使用批处理文件计算当前在文件夹中创建/修改的文件的数量

时间:2018-03-26 06:12:02

标签: batch-file command-line windows-10

下面的命令给我一个文件夹中的文件数,我想要今天在这个文件夹中创建/修改文件的数量,TIA。

set LocalFolder=D:\Myfolder
SET file_to_be_copied_Cnt=0
for %%o IN (%LocalFolder%/*.*) DO (       
      SET /A file_to_be_copied_Cnt=file_to_be_copied_Cnt + 1   
)
echo %file_to_be_copied_Cnt%

2 个答案:

答案 0 :(得分:1)

这个怎么样:

forfiles /P "%LocalFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" | find /C "_"

如果你想包含子目录,可以这样:

forfiles /S /P "%LocalFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" | find /C "_"

工作原理:

  • forfiles会为今天修改的每个文件返回_个字符(/D +0表示在今天或更新的日期修改);
  • if查询避免了目录被视为/计数;
  • find计算(/C)包含_个字符的返回行数;

要将结果数字指定给变量,请使用for /F lop

for /F %%N in ('forfiles /P "%LocalFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" ^| find /C "_"') do set "NUMBER=%%N"
echo %NUMBER%

或者:

for /F %%N in ('forfiles /S /P "%LocalFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" ^| find /C "_"') do set "NUMBER=%%N"
echo %NUMBER%

请注意转义的管道^|

答案 1 :(得分:0)

如果您实际上没有复制文件,只计算它们,您可以使用它:

@Echo Off
Set "LocalFolder=D:\MyFolder"
Set "i=0"
For /F "Tokens=*" %%A In (
    'RoboCopy "%LocalFolder%" Null /S /MaxAge:1 /L /XJ /NS /NC /NDL /NP /NJH /NJS'
) Do Set /A i+=1
Echo %i% files modified today
Pause

如果您还要复制文件并且需要知道复制的数字,那么您可以使用它:

@Echo Off
Set "SrcDir=D:\Projects"
Set "DstDir=E:\Backups"
Set "i=0"
For /F "Tokens=*" %%A In (
    'RoboCopy "%SrcDir%" "DstDir" /S /MaxAge:1 /XJ /NS /NC /NDL /NP /NJH /NJS'
) Do Set /A i+=1
Echo %i% files copied
Pause