无忧启动论坛

标题: 删除文本陈列内容 [打印本页]

作者: wenbieba    时间: 2023-7-19 21:53
标题: 删除文本陈列内容

把所需要删除文件或文件夹名关键字符一行一写,写入txt格式文本,
如:
amd64_microsoft.vc80.crt_
amd64_microsoft.windows.common-controls_
。。。。
进行模糊删除

用如下命令执行,批处理走完了,也没报错,但WinSxS-List.txt文本里边指定的内容没删掉
set "WinSxS-List=%Lists%\WinSxS-List.txt"
for /F %%I in (' Type "%Lists%\WinSxS-List.txt" 2^>nul') do (
        for /F "tokens=2 delims=: " %%a in ('dir /b /a:d %SystemDrive%\Windows\WinSxS ^| Findstr /I /C:"PackageName : %%I"') do (
         echo %%I
        
        RMDIR /S /Q "%%~I "
    ))
麻烦大师指点错误

作者: china.gaofeng    时间: 2023-7-19 22:13
没太看懂你的逻辑,最后删除时为什么不用 RD /S /Q "%%~a" 而是 %%~i? 而且引号里的空格也是多余的吧
作者: wenbieba    时间: 2023-7-19 22:21
china.gaofeng 发表于 2023-7-19 22:13
没太看懂你的逻辑,最后删除时为什么不用 RD /S /Q "%%~a" 而是 %%~i? 而且引号里的空格也是多余的吧

帮看看
for /F %%a in (' Type "%Lists%\WinSxS-List.txt" 2^>nul') do (
        for /F "tokens=2 delims=: " %%a in ('DIR /a:d /b /o:n /s %SystemDrive%\Windows\WinSxS\ ^| FINDSTR /i /g:%Lists%\WinSxS-List.txt 2^>nul')  do (
         echo %%a
        
        RD /S /Q %%~a
    ))
作者: wenbieba    时间: 2023-7-19 22:24
china.gaofeng 发表于 2023-7-19 22:13
没太看懂你的逻辑,最后删除时为什么不用 RD /S /Q "%%~a" 而是 %%~i? 而且引号里的空格也是多余的吧

改为'DIR /a:d /b /o:n /s %SystemDrive%\Windows\WinSxS\ ^| FINDSTR /i /g:%Lists%\WinSxS-List.txt
报找不到路径


I:\☆★MSMGToolkit★☆\Toolkit>(
echo \Windows\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.6161
RD /S /Q \Windows\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.6161
)
\Windows\WinSxS\Fusion\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_none_ea33c8f0b247cd77\9.0\9.0.30729.6161
系统找不到指定的路径。
作者: 2011dsfive    时间: 2023-7-19 22:25
这个不错啊
作者: conlin888    时间: 2023-7-19 22:26

set "WinSxS-List=%Lists%\WinSxS-List.txt"
for /F %%I in (' Type "%Lists%\WinSxS-List.txt" 2^>nul') do (
        for /F "tokens=2 delims=: " %%a in ('dir /b /a:d %SystemDrive%\Windows\WinSxS\ ^| Findstr /I /C:"PackageName : %%I"') do (
         echo %%I
        
        if exist "%systemroot%\winsxs\%%~I\" (RD /S /Q "%systemroot%\winsxs\%%~I ") else (del /q "%systemroot%\winsxs\%%~I")
    ))
作者: china.gaofeng    时间: 2023-7-19 22:29
试试这样
  1. for /F %%i in ('Type "%Lists%\WinSxS-List.txt" 2^>nul') do (
  2.     for %%a in ('DIR /a:d /b /o:n /s %SystemDrive%\Windows\WinSxS\ ^| FINDSTR /i /c:"%%i" 2^>nul')  do (
  3.         echo %%a
  4.         RD /S /Q "%%~a"
  5. ))
复制代码



作者: wenbieba    时间: 2023-7-19 22:35
china.gaofeng 发表于 2023-7-19 22:29
试试这样

不行,这个是挨着全删,没有按照文档内容进行
作者: china.gaofeng    时间: 2023-7-19 22:37
wenbieba 发表于 2023-7-19 22:35
不行,这个是挨着全删,没有按照文档内容进行

挨着全删是啥意思?
作者: wenbieba    时间: 2023-7-19 22:40
conlin888 发表于 2023-7-19 22:26
set "WinSxS-List=%Lists%\WinSxS-List.txt"
for /F %%I in (' Type "%Lists%\WinSxS-List.txt" 2^>nul' ...

这个也是批出里挨着走完,也没报错,也没删除
作者: wenbieba    时间: 2023-7-19 22:46
china.gaofeng 发表于 2023-7-19 22:37
挨着全删是啥意思?

%SystemDrive%\Windows\WinSxS\   文件夹下所有文件夹逐个挨着删除,没有直接对文本里的指定模糊名进行
作者: ppll2030    时间: 2023-7-19 22:55
你这个看不懂。举例挨个删除不用这么麻烦吧。。

我这个简单,你试试我这个。

@echo off


for /f %%a in ('dir /b /a:d "%SystemDrive%\Windows\WinSxS" ^| findstr/i /g:"具体路径\WinSxS-List.txt"') DO (
        echo %%a
        rmdir /s /q "%SystemDrive%\Windows\WinSxS\%%a"
        pause
        )


作者: conlin888    时间: 2023-7-19 23:01
wenbieba 发表于 2023-7-19 22:40
这个也是批出里挨着走完,也没报错,也没删除


set "WinSxS-List=%Lists%\WinSxS-List.txt"
for /F %%I in (' Type "%Lists%\WinSxS-List.txt" 2^>nul') do (
        for /F "delims=" %%a in ('dir /b /a %SystemDrive%\Windows\WinSxS\ ^| Find /i "%%I"') do (
         echo %%I
        
        if exist "%systemroot%\winsxs\%%~a\" (RD /S /Q "%systemroot%\winsxs\%%~a") else (del /q "%systemroot%\winsxs\%%~a")
    ))
作者: wenbieba    时间: 2023-7-19 23:04
ppll2030 发表于 2023-7-19 22:55
你这个看不懂。举例挨个删除不用这么麻烦吧。。

我这个简单,你试试我这个。

这种发帖前就实验过,不行
作者: ppll2030    时间: 2023-7-19 23:07
wenbieba 发表于 2023-7-19 23:04
这种发帖前就实验过,不行

不行吗?我刚刚试了一下是好使的啊然后才发出来的

作者: china.gaofeng    时间: 2023-7-19 23:16
抱歉,第二层FOR循环少写了/F

你加上试试
作者: yc2428    时间: 2023-7-19 23:39
学习一下
作者: ppll2030    时间: 2023-7-19 23:51
wenbieba 发表于 2023-7-19 23:04
这种发帖前就实验过,不行

你看啊,我这里是好使的啊


作者: 黑中见白    时间: 2023-7-20 05:47
用正则
然后用wimlib处理wim镜像
作者: szwp    时间: 2023-7-20 06:31
要删txt里的内容而不是文件和文件夹
作者: schdtv    时间: 2023-7-20 09:17
学习一下,谢谢分享!
作者: zqm0550    时间: 2023-7-20 09:24
一起学习一下
作者: sulong    时间: 2023-7-20 09:47
留意一下看看大家哪个方法好
作者: 天使说请安静    时间: 2023-7-20 10:33
你看看这个行不行:@echo off
setlocal enabledelayedexpansion
pushd %~dp0
if exist Deleted.txt del Deleted.txt
if exist Notfound.txt del Notfound.txt
for /f %%i in (WinSxS-List.txt) do call :del %%i
findstr /I /V /G:Deleted.txt WinSxS-List.txt>Notfound.txt
pause
exit

:del
for /D %%i in (*%1*) do (
  echo %%i>>Deleted.txt
  rd %%i /Q /S
)
goto :eof
pause

其中 WinSxS-List.txt是你的列表,Deleted.txt是被删除的列表,Notfound.txt是没找到文件夹的列表.

作者: vung123    时间: 2023-7-20 10:37
自己是新手什么都不会,大家有什么指教?
作者: wenbieba    时间: 2023-7-20 11:19
ppll2030 发表于 2023-7-19 23:51
你看啊,我这里是好使的啊

谢谢,辛苦了
作者: wenbieba    时间: 2023-7-20 11:21
conlin888 发表于 2023-7-19 23:01
set "WinSxS-List=%Lists%\WinSxS-List.txt"
for /F %%I in (' Type "%Lists%\WinSxS-List.txt" 2^>nu ...

谢谢,我晚上回去再弄
作者: wenbieba    时间: 2023-7-20 11:22
china.gaofeng 发表于 2023-7-19 23:16
抱歉,第二层FOR循环少写了/F

你加上试试

谢谢,我晚上回去再弄
作者: wfg1555    时间: 2023-7-20 11:25
进来学习。
作者: 黑中见白    时间: 2023-7-20 12:36
链接: https://pan.baidu.com/s/1jpz1zYgPGfq_jhxx2VT4Uw?pwd=eytr 提取码: eytr 复制这段内容后打开百度网盘手机App,操作更方便哦
快速抄袭wim_WinSxS列表.

作者: JERRY爱电脑    时间: 2023-7-20 21:25
问:为什么要加上PackageName这个字符串?dir出来的文件夹名称不带PackageName的




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3