如何使用批处理文件查找特定文件夹今天是否有修改

问题描述 投票:0回答:6

我有一个文件夹并使用批处理文件我想知道它是否已修改(在其中创建或修改的任何文件)。

下面是获取文件夹中所有文件计数的命令。我是批处理文件的新手,不知道如何获得它,pl帮助。

set MyFolder=D:\folder1
SET file_Cnt=0
for %%o IN (%MyFolder%/*.*) DO (      
      SET /A file_Cnt=file_Cnt+ 1    
)
echo %file_Cnt%

编辑: - 我得到了这个解决方案,但唯一的问题是我想设置一个变量(对于修改过的文件的总数),这可以在以后使用。

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

编辑2: - 我尝试过以下命令来设置变量但不起作用。

forfiles /S /P "%MyFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" | find /C "_"
echo %_%      --getting echo off message

for /F %%N in ('forfiles /S /P "%MyFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" ^| find /C "_"') do set "NUMBER=%%N"
echo %NUMBER% --getting echo off message
echo %%N --getting echo off message
powershell batch-file command-line windows-10
6个回答
2
投票

我建议你使用PowerShell。

Get-ChildItem -Path 'D:\Folder1' | Where-Object -FilterScript { $_.LastWriteTime.Date -eq (Get-Date).Date}

从命令提示符调用。

PowerShell.exe -c "Get-ChildItem -Path 'D:\Folder1' | Where-Object -FilterScript { $_.LastWriteTime.Date -eq (Get-Date).Date}|measure | select -expand count" 

1
投票

以下命令获取当天在同一天创建的当前文件夹中的所有文件的列表。

for /F "tokens=2" %i in ('date /t') do dir /T:C | findstr /C:%i /B

希望这可以帮助 !


1
投票

如果您只想输出文件名,可以尝试此命令

for /F "tokens=2" %i in ('date /t') do dir /T:C "C:\Test" | findstr /C:%i /B | for /f "tokens=5" %j in ('more') do @echo %j

或者,如果您想获得计数,可以尝试此命令

for /F "tokens=2" %i in ('date /t') do dir /T:C "C:\Test" | findstr /C:%i /B | find /c ":"

0
投票
 for /F %%N in ('forfiles /S /P "%MyFolder%" /M "*" /D +0 /C "cmd /C if @isdir==FALSE echo _" ^| find /C "_"') do (
     // we can simply get %%N here or we can also set some variable here if required.  
    )

-1
投票

我认为这个问题的答案可以帮助你,他们有脚本从文件夹和文件中获取LastModified,LastAccessed和DateCreated。

Batch file : get the creation date of a folder


-3
投票

以下是我的测试结果。你的命令@Mona中的错误是什么?

commandline

© www.soinside.com 2019 - 2024. All rights reserved.