删除文本陈列内容

查看 79|回复 6
作者:china.gaofeng   
把所需要删除文件或文件夹名关键字符一行一写,写入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
OP
  
没太看懂你的逻辑,最后删除时为什么不用 RD /S /Q "%%~a" 而是 %%~i? 而且引号里的空格也是多余的吧
china.gaofeng
OP
  

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
    ))
china.gaofeng
OP
  

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
系统找不到指定的路径。
china.gaofeng
OP
  
这个不错啊
china.gaofeng
OP
  

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
OP
  
试试这样
[ol]for /F %%i in ('Type "%Lists%\WinSxS-List.txt" 2^>nul') do (
    for %%a in ('DIR /a:d /b /o:n /s %SystemDrive%\Windows\WinSxS\ ^| FINDSTR /i /c:"%%i" 2^>nul')  do (
        echo %%a
        RD /S /Q "%%~a"
))[/ol]复制代码
您需要登录后才可以回帖 登录 | 立即注册

返回顶部