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

[文件操作] 批处理删除指定类型文件如何实现排除/保留/不删除指定文件

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

求教删除文件批处理
Windows\winsxs文件夹下,搜索删除所有prn*.inf,但是要保留prnms001和prnms002,这条批处理怎么写?

prnms001.inf和prnms002.inf两个

TOP

执行代码之前,请对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. )
复制代码

TOP

回复 3# GNU 非常感谢。

TOP

@echo off
for /f "delims=" %%i in ('dir /b "%systemroot%\winsxs\prn*.inf"^|findstr /v "001 002"') do del /q "%%i"

TOP

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

可以删除指定目录下的所有文件与文件夹,并且可以指定排除文件夹与文件
  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
复制代码

TOP

返回列表