Board logo

标题: [文件操作] 批处理删除指定类型文件如何实现排除/保留/不删除指定文件 [打印本页]

作者: yjw5738701    时间: 2017-3-12 21:24     标题: 批处理删除指定类型文件如何实现排除/保留/不删除指定文件

本帖最后由 pcl_test 于 2017-3-13 01:13 编辑

求教删除文件批处理
Windows\winsxs文件夹下,搜索删除所有prn*.inf,但是要保留prnms001和prnms002,这条批处理怎么写?
作者: yjw5738701    时间: 2017-3-12 21:25

prnms001.inf和prnms002.inf两个
作者: GNU    时间: 2017-3-12 21:32

执行代码之前,请对winsxs文件夹做好备份。
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d "%systemroot%\winsxs\prn*.inf"') do (
  3.     if "%%~nxi" neq "prnms001.inf" (
  4.         if "%%~nxi" neq "prnms002.inf" (
  5.             del /f /q "%%i"
  6.         )
  7.     )
  8. )
复制代码

作者: yjw5738701    时间: 2017-3-12 21:36

回复 3# GNU 非常感谢。
作者: taofan712    时间: 2017-3-13 12:04

@echo off
for /f "delims=" %%i in ('dir /b "%systemroot%\winsxs\prn*.inf"^|findstr /v "001 002"') do del /q "%%i"
作者: 惆怅而又凄凉    时间: 2019-3-25 02:10

正好用到了,我做了一些修改,使代码通用了很多,可以用于各种场景了,本人新手,还请指教。

可以删除指定目录下的所有文件与文件夹,并且可以指定排除文件夹与文件
  1. ::设置盘符为xydroot
  2. set "xydroot=%~dp0"
  3. ::将盘符:/缩进为盘符:
  4. set "xydroot=%xydroot:~,-1%"
  5. ::指定目录
  6. pushd "%xydroot%\"
  7. ::循环遍历指定目录内的所有文件夹并写入%%A(d,设为目录)
  8. for /f "delims=" %%A in ('dir /b /ad') do (
  9.     ::如果%%A不是bbb(不区分大小写)则
  10.     if /I not "%%A"=="bbb" (
  11.         ::如果%%A不是ccc(不区分大小写)则
  12.         if /I not "%%A"=="ccc" (
  13.             ::删除目录
  14.             rmdir /s /q "%%A"
  15.         )
  16.     )
  17. )
  18. ::循环遍历指定目录内的所有文件并写入%%A (-d,不含目录)
  19. for /f "delims=" %%A in ('dir /b /a-d') do (
  20.     ::如果%%A不是start.exe则
  21.     if /I not "%%A"=="start.exe" (
  22.         ::跳过一切障碍,强制删除文件
  23.         del "%%A" /f /q /a
  24.     )
  25. )
  26. ::指定目录结束
  27. popd
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2