批处理之家's Archiver

lovekix 发表于 2020-2-20 11:33

批处理删除指定文件夹下以外的文件

文件夹C:\Windows\servicing\Packages 下面包含很多文件夹和文件
只保留 含有MediaPlayback的文件和SMB1的文件


里面的文件名  都是 这样的

Microsoft-Windows-MediaPlayback-OC-Package~31bf3856ad364e35~amd64~~10.0.19041.1.cat
Microsoft-Windows-MediaPlayback-OC-Package~31bf3856ad364e35~amd64~~10.0.19041.1.mum
Microsoft-Windows-MediaPlayback-OC-Package~31bf3856ad364e35~amd64~zh-CN~10.0.19041.1.cat
Microsoft-Windows-MediaPlayback-OC-Package~31bf3856ad364e35~amd64~zh-CN~10.0.19041.1.mum


最好是  可以 指定   MediaPlayback   只要包含这样的 都保留

如果不行   就 前面 精确  后面模糊  也行

请问如何实现?
移动文件夹的话  再移动回来 就不能用了   不知道是什么原因(所以尽量不要移动再创建)

for /f "delims=" %%i in ('dir /ad /b
后面不会写了

Gin_Q 发表于 2020-2-20 11:54

[i=s] 本帖最后由 Gin_Q 于 2020-2-20 12:54 编辑 [/i]

[code]@echo off
for /r ./ %%a in (*) do (for /f %%b in ('echo %%~nxa ^| findstr /v /c:c') do echo %%b)
pause[/code]

zaqmlp 发表于 2020-2-20 12:00

以管理员身份运行[code]@echo off
set info=互助互利,支付宝扫码头像,感谢打赏
rem 有问题,可加QQ956535081及时沟通
title %info%
set "fd=C:\Windows\servicing\Packages"
if not exist "%fd%" (echo;"%fd%" no found&goto end)
for /f "delims=" %%a in ('dir /a-d/b/s "%fd%\"') do (
    if "%%~nxa" neq "%~nx0" (
        set "name=%%~na"&set "f=%%a"&set "z="
        setlocal enabledelayedexpansion
        if /i "!name:MediaPlayback=!" neq "!name!" set z=1
        if /i "!name:SMB1=!" neq "!name!" set z=1
        if not defined z del /f /q "!f!"
        endlocal
    )
)
:end
echo;%info%
pause
exit[/code]

lovekix 发表于 2020-2-20 18:18

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=226664&ptid=54884]2#[/url] [i]Gin_Q[/i] [/b]


    感谢  但是  不明白怎么使用

lovekix 发表于 2020-2-20 18:19

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=226665&ptid=54884]3#[/url] [i]zaqmlp[/i] [/b]


    谢谢

red2020 发表于 2020-2-20 18:38

[i=s] 本帖最后由 red2020 于 2020-2-20 18:45 编辑 [/i]

一箭双雕,一行搞定.[code]@echo off&for /f "delims=" %%a in ('dir /a-d /b /s "C:\Windows\servicing\Packages\" ^|findstr /v "MediaPlayback SMB1" ') do (del /f /q "%%a")&pause
[/code][b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=226672&ptid=54884]5#[/url] [i]lovekix[/i] [/b]

lovekix 发表于 2020-3-25 10:05

[code]

@echo off
set info=标题
title %info%
set "fd=C:\Windows\servicing\Packages"
if not exist "%fd%" (echo;"%fd%" no found&goto end)
for /f "delims=" %%a in ('dir /a-d/b/s "%fd%\"') do (
    if "%%~nxa" neq "%~nx0" (
        set "name=%%~na"&set "f=%%a"&set "z="
        setlocal enabledelayedexpansion
        if /i "!name:Microsoft-Windows-Presentation-Package=!" neq "!name!" set z=1
        if /i "!name:Microsoft-Windows-WindowsFoundation-LanguagePack-Package=!" neq "!name!" set z=1
        if not defined z del /f /q "!f!"
        endlocal
    )
)
:end
echo;%info%
pause
exit




[/code]感谢  zaqmlp

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.