如何在Windows 10命令提示符中删除多文件夹内指定数量文件
嘿,这个需求其实用Windows自带的CMD批处理或者PowerShell就能轻松搞定,不用非得折腾Python。我给你俩靠谱方案,按需选:
方案1:纯CMD批处理脚本
如果你坚持要用命令提示符的原生语法,这个嵌套循环脚本可以精准帮你每个文件夹删够500个文件:
@echo off setlocal enabledelayedexpansion :: 这里设置要删除的文件数量,改成你需要的数字就行 set "delete_count=500" :: 遍历当前目录下的所有子文件夹 for /d %%d in (*) do ( echo 正在处理文件夹: %%d pushd "%%d" :: 生成当前文件夹的文件列表(只取文件,排除子文件夹),存到临时文件 dir /b /a-d > temp_filelist.txt :: 初始化计数器,记录已删除的文件数 set "count=0" :: 遍历临时文件里的文件名,逐个删除直到达到目标数量 for /f "delims=" %%f in (temp_filelist.txt) do ( if !count! lss %delete_count% ( del "%%f" set /a count+=1 ) else ( :: 删够数了就跳到下一个文件夹 goto :next_folder ) ) :next_folder :: 清理临时文件 del temp_filelist.txt popd ) echo 所有文件夹处理完成! endlocal
使用步骤:
- 打开记事本,把上面的代码粘进去,保存成
delete_files.bat(注意保存类型选“所有文件”) - 把这个批处理文件放到包含那30个文件夹的父目录里
- 双击运行,或者在CMD里进入父目录后输入
delete_files.bat执行
小提示:
- 测试的时候可以把
del "%%f"改成echo del "%%f",这样只会打印要删除的文件名,不会真删,先确认没问题再改回去。 enabledelayedexpansion是为了让计数器在循环里正常更新,别删掉这行。
方案2:PowerShell命令(更简洁,可在CMD里直接调用)
如果不排斥用PowerShell(Windows 10自带,不用额外安装),这一行命令就能搞定,比CMD批处理省心多了:
powershell -Command "Get-ChildItem -Directory | ForEach-Object { Get-ChildItem -File -Path $_.FullName | Select-Object -First 500 | Remove-Item -Force }"
解释:
Get-ChildItem -Directory:获取当前目录下的所有子文件夹ForEach-Object:对每个文件夹执行后续操作Get-ChildItem -File:获取文件夹里的所有文件Select-Object -First 500:只取前500个文件Remove-Item -Force:删除这些文件,-Force可以强制删除只读文件,不需要的话可以去掉
测试技巧:
把Remove-Item -Force改成Write-Output $_.FullName,就能先预览要删除的文件路径,确认无误再改回去执行删除。
内容的提问来源于stack exchange,提问作者Andrew Earl
相关产品推荐
相关产品推荐

