返回列表 发帖

[文件操作] (已解决)检索某个根目录下的一级子目录和一级子文件,保留或删除。bat代码?

本帖最后由 ygqiang 于 2025-4-3 16:13 编辑

检索某个根目录下的一级子目录和一级子文件,符合要求就保留,否则就删除。bat代码?
只针对根目录下的一级子目录和一级子文件,检索、判断、操作(保留或删除)。


c盘根目录下,需要保留的一级子目录和一级子文件,名称如下:
---------------------------------------
一级子目录名称是
Intel
PerfLogs
Program Files
Program Files (x86)
Windows
Users
(下面是隐藏的子目录)
8888
Boot
Config.Msi
Documents and Settings
MSOCache
ProgramData
---------------------------------------


---------------------------------------
一级子文件名称是
kernel*.*
sealdr*.*
(下面是隐藏的文件)
ABSPE*.*
bootmgr*.*
BOOTSECT*.*

本帖最后由 ygqiang 于 2025-4-3 14:32 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=:" %%i in ('findstr /n "^:del-dir$" "%~f0"') do (
  4.     more +%%i "%~f0" > 保留子目录和子文件.txt
  5. )
  6. echo 循环读取txt文件的每一行,赋值给变量
  7. set targe=''
  8. for /f "delims=" %%i in (保留子目录和子文件.txt) do (
  9. set target=%%i
  10. echo !target!
  11. pause >nul 2>nul
  12. cls >nul 2>nul
  13. )
  14. pause >nul 2>nul
  15. cls
  16. exit
  17. ———————————————————————
  18. :del-dir
  19. Intel
  20. PerfLogs
  21. Program Files
  22. Program Files (x86)
  23. Windows
  24. Users
  25. 8888
  26. Boot
  27. Config.Msi
  28. Documents and Settings
  29. MSOCache
  30. ProgramData
  31. kernel*.*
  32. sealdr*.*
  33. ABSPE*.*
  34. bootmgr*.*
  35. BOOTSECT*.*
复制代码

TOP

  1. REM 遍历所有一级文件和目录
  2. for /f "delims=" %%d in ('dir /b /ad "%root_dir%"') do (
  3.     echo Checking directory: %%d
  4.     if not "%%d"=="!target!" (
  5.         echo directory: %%d
  6. cls
  7.         echo rmdir /s /q "%root_dir%\%%d"
  8. pause
  9.     )
  10. )
  11. for /f "delims=" %%f in ('dir /b /a-d "%root_dir%"') do (
  12.     echo Checking file: %%f
  13.     if not "%%f"=="!target!" (
  14.         echo file: %%f
  15. cls
  16.         echo del /q "%root_dir%\%%f"
  17. pause
  18.     )
  19. )
复制代码

TOP

本帖最后由 ygqiang 于 2025-4-3 14:59 编辑

回复 4# aloha20200628


    谢谢,能否按照2楼代码,需要排除的
所有的一级子目录和一级子文件,
都存放在一个txt文件里?

然后判断,操作,都根据这个txt文件进行

rd和del可以放在一起操作文件名和文件吧?
rd 文件名称,del 文件名。
这2种情况,如果遇到了,实际也不会有什么副作用?

TOP

回复 6# aloha20200628


    谢谢,可用

TOP

本帖最后由 ygqiang 于 2025-4-3 16:56 编辑

回复 8# 77七


    谢谢。需要排除的一级子目录和一级子文件,列出来。
感觉可读性不如楼上的代码

TOP

回复 10# 77七


      谢谢。这个代码,哪些特殊情况下会遇到问题呢?

TOP

回复 10# 77七


    这代码测试了,不好用

TOP

最终代码,测试通过。
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始
  3. echo 删除c盘根目录下的一级子目录和一级子文件
  4. cd /d "c:\"
  5. for /f "delims=:" %%n in ('findstr /bln ":::::::::::::::::::::::::::::::::" "%~f0" ') do set "n=%%n"
  6. for /f "usebackq skip=%n% tokens=1* delims=*" %%a in ("%~f0") do if "%%b"== "" (set d=!d! /c:"%%~a!") else (set F=!F! /c:"%%~a!")
  7. for /f "delims=" %%d in ('dir/b/ad^|findstr /irv !d!') do echo,rd /q/s "%%d"
  8. for /f "delims=" %%F in ('dir/b/a-d^|findstr /irv !F!') do echo,del /q "%%F"
  9. pause
  10. for /f "delims=" %%d in ('dir/b/ad^|findstr /irv !d!') do rd /q/s "%%d"
  11. for /f "delims=" %%F in ('dir/b/a-d^|findstr /irv !F!') do del /q "%%F"
  12. pause&exit/b
  13. :::::::::::::::::::::::::::::::::
  14. echo,一级子目录
  15. Intel
  16. PerfLogs
  17. Program Files
  18. Program Files (x86)
  19. Windows
  20. Users
  21. $RECYCLE.BIN
  22. 8888
  23. Boot
  24. Config.Msi
  25. Documents and Settings
  26. MSOCache
  27. ProgramData
  28. Recovery
  29. System Volume Information
  30. echo,一级子文件
  31. kernel*.*
  32. pagefile.sys
  33. sealdr*.*
  34. ABSPE*.*
  35. bootmgr*.*
  36. BOOTSECT*.*
复制代码

TOP

回复 15# 77七


    这个应该无所谓,win系统界面下,这个文件也无法删除的。

TOP

返回列表