Windows批处理文件夹存在且文件夹不存在

Windows批处理文件夹存在且文件夹不存在,windows,batch-file,directory,exists,Windows,Batch File,Directory,Exists,我们需要删除100天以前存在于特定文件夹下的zip文件。其他文件夹中的所有其他zip文件,我们可以删除30天以前的文件。如果文件是一个特定的名称,这将很容易,不幸的是,我们只能通过文件夹名来完成 最后,我们将在FORFILES中使用这些技术之一,因为我们不必在脚本中进行大量逻辑编程 搜索并找到了如何执行此操作的方法,工作正常,但脚本的处理速度非常慢。。几乎在这一点上,“NOT”somefolder条件下的所有内容都需要相当长的时间才能完成。我们已经用VBScript和PowerShell完成了这

我们需要删除100天以前存在于特定文件夹下的zip文件。其他文件夹中的所有其他zip文件,我们可以删除30天以前的文件。如果文件是一个特定的名称,这将很容易,不幸的是,我们只能通过文件夹名来完成

最后,我们将在FORFILES中使用这些技术之一,因为我们不必在脚本中进行大量逻辑编程

搜索并找到了如何执行此操作的方法,工作正常,但脚本的处理速度非常慢。。几乎在这一点上,“NOT”somefolder条件下的所有内容都需要相当长的时间才能完成。我们已经用VBScript和PowerShell完成了这项工作,但确实想回到批处理脚本中

正如德本哈姆所承认的,这也是非常缓慢的。另外,不喜欢这样一个事实,即它不会为找不到的文件夹显示处于“not”状态的所有文件夹 他还说,如果你想做大量的文件/文件夹搜索,重定向到输出文件,也许是最好的解决方案

这确实有效,但不会显示“未找到”或它将列出的文件夹

dir /s /a-d c:\windows\*system32* >nul && (echo found it) || (echo not found)
这可用于查找驱动器上带有system32的所有文件夹

dir /b /ad /s "c:\system32"
这样做的目的是在搜索结果中查找确实有system32的文件夹,这些文件夹也非常快

FOR /f "tokens=*" %%G IN ('dir /b /ad /s c:\ ^| findstr /I /C:"system32"') DO echo %%G
我们想显示中没有system32的所有文件夹,在测试和重定向到result.txt文件时,它创建了一个11.9MB的文件,需要很长时间才能完成,尤其是在整个驱动器上

FOR /f "tokens=*" %%G IN ('dir /b /ad /s c:\ ^| findstr /I /V /C:"system32"') DO echo %%G
对这个不太确定

for /r c:\ %%F in (system32) if exist "%%F" echo %%~dpF
玩我们得到的东西

For /F %%A IN('dir /s /a-d "c:\windows\*system32*") do && (echo found it) || (echo not found)

还有其他想法或建议吗?

这将在
c:\files
和下面搜索,并根据以下条件删除zip文件:

在名为
Special folder
的文件夹中,如果它们是100天或更久的,它将删除它们
否则,它将删除他们,如果他们是30天或以上

特殊文件夹
下文件夹中的任何zip文件将在30天或更长时间后删除

使用前先测试一下

@echo off
for /r "c:\files" %%a in (*.zip) do (
   for %%b in ("%%~dpa\.") do (
      if /i "%%~nxb"=="Special folder" (
         forfiles /p "%%~dpa." /m "%%~nxa" /d -100 /c "cmd /c del @path"
        ) else (
         forfiles /p "%%~dpa." /m "%%~nxa" /d -30  /c "cmd /c del @path"
      )
   )
)

pause

您正在使用*.zip文件规范,对吗?这将限制文件必须处理的文件数量,并减少所需时间。我想你每天做一次,而且可以在后台做,对吗?这需要多长时间?这将是一天一次,它是Zip文件,但文件夹名称是我需要寻找的第一。如果它是文件夹的一个名称,我需要在100天后删除zip文件。。所有其他文件夹,我们可以在30天后删除Zip文件。我确实尝试了微软的以下代码,但似乎也不起作用
forfiles/p c:\WINDOWS/s/m**/c“cmd/c如果@isdir==true,如果@file==System32 echo@file是一个目录”
特殊目录是单个文件夹还是需要排除的文件夹树?