我们需要在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)
那里有其他想法或建议吗?
答案 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