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

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

本帖最后由 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
复制代码

  1. for /f "delims=" %%a in ('dir /b /a-d ^|findstr /r /v "Microsoft-Windows-"') do (
  2.      del %%a
复制代码
这样写   保留的 全部包含这些字符的

不是Microsoft-Windows-  开头的

TOP

  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
复制代码

TOP

回复 3# 路过


    如果  还需要  保留Package   开头的  怎么在什么地方 添加?

TOP

确认后,第五行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
复制代码

TOP

本帖最后由 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
复制代码
不知道 这样行不行

试了试 不运行

TOP

回复 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
复制代码

TOP

回复 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
复制代码

TOP

本帖最后由 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
复制代码
好像有问题    一闪就退出了  没有 任何操作

TOP

回复 7# 路过
[/url] went

    是不是  每加一行
  1. if "!st!" neq "Package" (
  2. del /a /f /q %%i
复制代码

TOP

回复 8# went


    研究半天   还是不行

TOP

未测试,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
复制代码

TOP

回复 9# lovekix

要保存ansi编码

TOP

回复 13# went


    是ansi编码  


TOP

回复 12# qixiaobin0715


    这个 不行     这个运行的是   包含这些字符的     不是开头的

TOP

返回列表