找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 75764|回复: 19

[文件操作] 修改批处理保留指定字符串开头的文件{已经解决}

[复制链接]
发表于 2021-6-15 17:21:30 | 显示全部楼层 |阅读模式
本帖最后由 lovekix 于 2021-7-5 08:16 编辑

C:\Windows\servicing\Packages  

文件夹下有很多文件

我想 保留指定 开头为 Microsoft-Windows- 的文件

我写了一个 批处理  不知道 问题出在什么地方
  1. for /f "delims=" %%i in ('dir /b /a-d Microsoft-Windows-*') do del /a /f /q %%i
复制代码
 楼主| 发表于 2021-6-15 17:39:24 | 显示全部楼层
  1. for /f "delims=" %%a in ('dir /b /a-d ^|findstr /r /v "Microsoft-Windows-"') do (
  2.      del %%a
复制代码
这样写   保留的 全部包含这些字符的

不是Microsoft-Windows-  开头的
发表于 2021-6-15 19:14:20 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d') do (
  4.         set file=%%~i
  5.         set st=!file:~0,18!
  6.         if "!st!" neq "Microsoft-Windows-" (del /a /f /q %%i)
  7. )
  8. pause
  9. exit
复制代码
 楼主| 发表于 2021-6-15 19:47:44 | 显示全部楼层
回复 3# 路过


    如果  还需要  保留Package   开头的  怎么在什么地方 添加?
发表于 2021-6-15 20:14:58 | 显示全部楼层
确认后,第五行echo改为del
  1. @echo off
  2. cd /d "C:\Windows\servicing\Packages"
  3. REM 开头保存字符串,竖线分隔多个
  4. set "save=Microsoft-Windows-|Package"
  5. for /f "delims=" %%i in ('dir /b /a-d ^| findstr /b /v "%save:|= %"') do echo %%i
  6. pause&exit
复制代码
 楼主| 发表于 2021-6-15 22:25:26 | 显示全部楼层
本帖最后由 lovekix 于 2021-6-15 22:35 编辑
确认后,第五行echo改为del
went 发表于 2021-6-15 20:14



完美运行

    谢谢
只是有1个小缺点   某一个出问题  查找 比较费劲
  1. @echo off
  2. cd /d "C:\Windows\servicing\Packages"
  3. REM 开头保存字符串,竖线分隔多个
  4. set "save=Microsoft-Windows-
  5. |Package
  6. |1
  7. |2
  8. |4"
  9. for /f "delims=" %%i in ('dir /b /a-d ^| findstr /b /v "%save:|= %"') do echo %%i
  10. pause&exit
复制代码
不知道 这样行不行

试了试 不运行
发表于 2021-6-15 22:42:58 | 显示全部楼层
回复 4# lovekix
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d') do (
  4.         set file=%%~i
  5.         set st=!file:~0,18!
  6.         if "!st!" neq "Microsoft-Windows-" (
  7.                 set st=!file:~0,7!
  8.                 if "!st!" neq "Package" (
  9.                         del /a /f /q %%i
  10.                 )
  11.         )
  12. )
  13. pause
  14. exit
复制代码
发表于 2021-6-15 22:47:53 | 显示全部楼层
回复 6# lovekix
  1. @echo off
  2. cd /d "C:\Windows\servicing\Packages"
  3. for /f "delims=:" %%i in ('findstr /b /n ":list" "%~0"') do for /f "delims=" %%a in ('more +%%i "%~0"') do call set "save=%%save%%:%%a"
  4. for /f "delims=" %%i in ('dir /b /a-d ^| findstr /b /v "%save::= %"') do echo %%i
  5. pause&exit
  6. REM 开头保存字符串,一行一个
  7. :list
  8. Microsoft-Windows-
  9. Package
复制代码
 楼主| 发表于 2021-6-16 10:09:48 | 显示全部楼层
本帖最后由 lovekix 于 2021-6-16 10:33 编辑

回复 8# went
  1. @echo off
  2. cd /d "C:\Windows\servicing\Packages"
  3. for /f "delims=:" %%i in ('findstr /b /n ":list" "%~0"') do for /f "delims=" %%a in ('more +%%i "%~0"') do call set "save=%%save%%:%%a"
  4. for /f "delims=" %%i in ('dir /b /a-d ^| findstr /b /v "%save::= %"') do del %%i
  5. pause&exit
  6. REM 开头保存字符串,一行一个
  7. :list
  8. Microsoft-Windows-
  9. Package
复制代码
好像有问题    一闪就退出了  没有 任何操作
 楼主| 发表于 2021-6-16 13:43:47 | 显示全部楼层
回复 7# 路过
[/url] went

    是不是  每加一行
  1. if "!st!" neq "Package" (
  2.                         del /a /f /q %%i
复制代码
 楼主| 发表于 2021-6-16 15:18:36 | 显示全部楼层
回复 8# went


    研究半天   还是不行
发表于 2021-6-17 11:39:04 | 显示全部楼层
未测试,del慎用:
  1. @echo off
  2. set var="Package Microsoft-Windows-"
  3. cd /d "C:\Windows\servicing\Packages"
  4. for /f "delims=" %%i in ('dir /b /a-d ^| findstr /bv %var%') do del /a /f /q "%%i"
  5. pause
复制代码
发表于 2021-6-17 12:17:14 | 显示全部楼层
回复 9# lovekix

要保存ansi编码
 楼主| 发表于 2021-6-17 12:38:13 | 显示全部楼层
回复 13# went


    是ansi编码  


 楼主| 发表于 2021-6-17 12:39:53 | 显示全部楼层
回复 12# qixiaobin0715


    这个 不行     这个运行的是   包含这些字符的     不是开头的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 19:17 , Processed in 0.035767 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表