[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 有请批处理大佬删除指定文件夹以外的特定类型文件

批处理删除C盘除了C:\Windows C:\Program Files (x86) C:\Program Files C:\ProgramData这4个文件夹以外其它所有文件夹的*.xls *.xlsm *.xlsx *.xlsb这4种文件,要注意的是排除的4个夹是包含空格的请用引号,这个用gpt4写了一下午,期间改了好多次就是没一次能实现效果的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 定义要排除的文件夹
  4. set "exclude1=C:\Windows"
  5. set "exclude2=C:\Program Files (x86)"
  6. set "exclude3=C:\Program Files"
  7. set "exclude4=C:\ProgramData"
  8. REM 遍历C盘根目录下的所有文件夹
  9. for /d %%d in ("C:\*") do (
  10.     set "skip=0"
  11.    
  12.     REM 检查当前文件夹是否在排除列表中
  13.     for %%e in ("%exclude1%" "%exclude2%" "%exclude3%" "%exclude4%") do (
  14.         if /i "%%~d"=="%%~e" set "skip=1"
  15.     )
  16.    
  17.     REM 如果不在排除列表中,则删除指定类型的文件
  18.     if "!skip!"=="0" (
  19.         del /q "%%d\*.xls" "%%d\*.xlsm" "%%d\*.xlsx" "%%d\*.xlsb"
  20.     )
  21. )
  22. echo 删除完成!
  23. pause
复制代码
这是gpt最终得到的批处理
我觉得应该实现的思路是先排除掉这几个文件夹,然后针对获取到的每个文件夹来执行类似 del 路径*.xls /f /s /q才是正确

回复 3# aloha20200628


    隐藏之类的文件夹就不管了

TOP

回复 4# aloha20200628


    好的我谢谢,谢谢大佬

TOP

回复 1# newyun

三楼代码已被订正...

TOP

本帖最后由 aloha20200628 于 2025-1-10 19:02 编辑

回复 1# newyun

c盘还可能有其他被系统保护的子目录文件,仅用 del 命令不一定能铲动 ...
  1. @echo off &cd /d "c:\" &for /f "delims=" %%d in (
  2.    'dir /b/ad^|findstr /bixv /c:"windows" /c:"Program Files" /c:"Program Files (x86)" /c:"ProgramData" '
  3. ) do (del /s/q/f "%%d\*.xls" "%%d\*.xlsm" "%%d\*.xlsx" "%%d\*.xlsb" ) 2>nul
  4. pause&exit/b
复制代码

TOP

$pathList = @("C:\Windows", "C:\Program Files (x86)", "C:\Program Files", "C:\ProgramData")

$targetExtensionList = @(".xls", ".xlsm", ".xlsx", ".xlsb")

$targetPath = Get-ChildItem -Path C:\ -Depth 0 -Directory | Where-Object {$_.FullName -notin $pathList}

$targetPath | ForEach-Object { Get-ChildItem -Path $_.FullName -File -Recurse -Filter "*.xls*" } | Where-Object {$_.Extension -in $targetExtensionList} | ForEach-Object { Remove-Item -Path $_.FullName }

TOP

返回列表