Windows Batch文件夹存在且文件夹不存在

时间:2014-01-11 16:19:32

标签: windows batch-file directory exists

我们需要在100天内删除特定文件夹下存在的zip文件。其他文件夹中的所有其他zip文件,我们可以删除30天以上。如果文件是特定名称,这将很容易,遗憾的是我们只能通过文件夹名称来执行此操作。

在最终结果中,我们将使用FORFILES中的一种技术,因为我们不必在脚本中进行大量的逻辑编程。

搜索并确实找到了如何做到这一点并且工作正常,但脚本的处理速度非常慢..在这一点上,“NOT”某些文件夹条件中的所有内容都是需要的很长一段时间才能完成。使用VBScript和PowerShell完成了这项工作,但是我真的想回到Batch Scripting。

BAT script to search directory for folders that match an input name 正如dbenham所承认的,这又是非常缓慢的。此外,不喜欢这样的事实,它没有显示所有文件夹在“不”条件下找不到它 他还说,如果你想进行大量文件/文件夹搜索重定向到输出文件,也许是最好的解决方案

这确实有效,但没有显示“未找到”或列出的文件夹..

dir /s /a-d c:\windows\*system32* >nul && (echo found it) || (echo not found)

这适用于在驱动器上找到system32的所有文件夹

dir /b /ad /s "c:\system32"

这样可以在结果中查找 DO HAVE system32的文件夹,这些文件很快

FOR /f "tokens=*" %%G IN ('dir /b /ad /s c:\ ^| findstr /I /C:"system32"') DO echo %%G

我们希望在测试和重定向到result.txt文件中显示完全没有 system32的所有文件夹,它创建了一个11.9MB的文件,需要很长时间才能完成,特别是在整个驱动器

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

How do I search for the directory of a file given its name using a batch script? 对此不太确定

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)

那里有其他想法或建议吗?

1 个答案:

答案 0 :(得分:2)

这将在c:\files及以下搜索,并按以下标准删除zip文件:

在名为Special folder的文件夹中,如果它们是100天或更早,它将删除它们 如果他们是30天或更长时间,它将删除它们。

Special folder下方文件夹中的任何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