无忧启动论坛

标题: 这个批出里什么地方有问题 [打印本页]

作者: wenbieba    时间: 2023-7-2 19:52
标题: 这个批出里什么地方有问题
for /f "delims=: tokens=1" %%i in ('dir /b /ad "%SystemDrive%\Program Files\" "%SystemDrive%\Program Files (x86)\" "%SystemDrive%\ProgramData\Microsoft\" 2^>nul^| findstr "Windows Defender"') do (cmd.exe /c takeown /f "%%i" && icacls "%%i" /grant administrators:F /t

RD /Q /S  "%%i" )

作者: JERRY爱电脑    时间: 2023-7-2 20:01
ChatGPT的回答:
这段批处理代码有几个潜在的错误。下面是经过修正后的代码:

  1. @echo off
  2. for /f "delims=: tokens=1" %%i in ('dir /b /ad "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\Microsoft" 2^>nul ^| findstr "Windows Defender"') do (
  3.     takeown /f "%%i" && icacls "%%i" /grant administrators:F /t
  4.     RD /Q /S "%%i"
  5. )
复制代码
以下是对代码所做的更改说明:

请注意,这段代码将尝试删除与 "Windows Defender" 相关的文件夹,并为这些文件夹赋予管理员完全控制权限。请谨慎运行此代码,确保你了解其执行的后果。强烈建议在运行之前创建备份,并在测试环境中进行操作。






作者: wenbieba    时间: 2023-7-2 20:20
JERRY爱电脑 发表于 2023-7-2 20:01
ChatGPT的回答:
这段批处理代码有几个潜在的错误。下面是经过修正后的代码:

刚运行了大佬修改的批处理,现在唯一问题会误删其他文件夹,
作者: zwmfyy    时间: 2023-7-2 20:47
二楼的厉害,竟然 使用智能了。
作者: wenbieba    时间: 2023-7-2 20:48
zwmfyy 发表于 2023-7-2 20:47
二楼的厉害,竟然 使用智能了。

麻烦大师看看
作者: gailium    时间: 2023-7-2 21:32
wenbieba 发表于 2023-7-2 20:20
刚运行了大佬修改的批处理,现在唯一问题会误删其他文件夹,

findstr改成findstr /ilc:"Windows Defender"
作者: fulibo    时间: 2023-7-2 21:34
我都不懂这些!但是我也知道你的参数用多了!
直接扫描整个C盘,然后把里面含有杀毒同名字的文件名,
复制到第三方文件!
然后提权删除第三方文件里面含有杀毒同名字的文件!

作者: wenbieba    时间: 2023-7-2 22:17
gailium 发表于 2023-7-2 21:32
findstr改成findstr /ilc:"Windows Defender"

不行的,找不到路径文件
作者: gailium    时间: 2023-7-2 22:19
wenbieba 发表于 2023-7-2 22:17
不行的,找不到路径文件

找不到路径那是dir /ad /b /s
作者: gailium    时间: 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\Microsoft" 2^>nul ^| findstr /ilc:"Windows Defender"') do (
    echo %%i
    takeown /f "%%i" && icacls "%%i" /grant administrators:F /t
    RD /Q /S "%%i"
)
pause
作者: wenbieba    时间: 2023-7-2 22:25
gailium 发表于 2023-7-2 22:19
找不到路径那是dir /ad /b /s

还是不行,一闪而过
作者: wenbieba    时间: 2023-7-2 22:29
gailium 发表于 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

成功了,谢谢
作者: conlin888    时间: 2023-7-2 22:29
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\Microsoft" 2^>nul ^| find /i "Windows Defender"') do (
    echo %%i
    takeown /f "%%i" && icacls "%%i" /grant administrators:F /t
    RD /Q /S "%%i"
)
pause
作者: wenbieba    时间: 2023-7-2 22:31
gailium 发表于 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

如果在给加上删除这个文件夹Windows Security Health,给什么地方添加
作者: wenbieba    时间: 2023-7-2 22:35
conlin888 发表于 2023-7-2 22:29
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

谢谢大哥热心回复,如果在给加上删除这个文件夹Windows Security Health,给什么地方添加
作者: conlin888    时间: 2023-7-2 22:48
wenbieba 发表于 2023-7-2 22:35
谢谢大哥热心回复,如果在给加上删除这个文件夹Windows Security Health,给什么地方添加

@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\Microsoft" 2^>nul ^| find /i "Windows"') do (
    if /i not "%%~ni"=="Windows Defender" (if /i not "%%~ni"=="Windows Security Health" goto :eof)
    echo %%i
    takeown /f "%%i" && icacls "%%i" /grant administrators:F /t
    RD /Q /S "%%i"
)
pause
作者: wenbieba    时间: 2023-7-2 22:51
conlin888 发表于 2023-7-2 22:48
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Pr ...

大佬辛苦了,谢谢大佬热情回复
作者: yyz2191958    时间: 2023-7-2 22:55
wenbieba 发表于 2023-7-2 22:29
成功了,谢谢

恭喜恭喜问题解决
作者: wenbieba    时间: 2023-7-2 22:59
conlin888 发表于 2023-7-2 22:48
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Pr ...

大师是不可以像这样无限加
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\Microsoft" 2^>nul ^| find /i "Windows"') do (
    if /i not "%%~ni"=="Windows Defender" (
    if /i not "%%~ni"=="Windows Security Health"  (
     if /i not "%%~ni"=="Windows 123"  ( goto :eof)
    echo %%i
    takeown /f "%%i" && icacls "%%i" /grant administrators:F /t
    RD /Q /S "%%i"
)
作者: wenbieba    时间: 2023-7-2 23:01
yyz2191958 发表于 2023-7-2 22:55
恭喜恭喜问题解决

非常感谢各位大佬热心答复解决问题,折腾两天了
作者: conlin888    时间: 2023-7-2 23:12
本帖最后由 conlin888 于 2023-7-3 15:40 编辑
wenbieba 发表于 2023-7-2 22:59
大师是不可以像这样无限加
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "% ...

我也是菜鸟,互相学习。

少了两个)。

@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files\" "%SystemDrive%\Program Files (x86)\" "%SystemDrive%\ProgramData\Microsoft\" 2^>nul ^| find /i "Windows"') do (
   set a=0
   if /i not "%%~ni"=="Windows Defender" (
     if /i not "%%~ni"=="Windows Security Health" (
       if /i not "%%~ni"=="Windows 123" (set a=1)
     )
   )
   call echo %%a^%%|find /i "1">nul||(
   echo %%i
   takeown /f "%%i" && icacls "%%i" /grant administrators:F /t
   RD /Q /S "%%i"
   )
)

pause

作者: 610644034    时间: 2023-7-2 23:15
标题: Program Files (x86)
本帖最后由 610644034 于 2023-7-2 23:17 编辑

() 问题
Program Files (x86) 目录包含字符串与批处理识别的字符串冲突了!
作者: wenbieba    时间: 2023-7-2 23:33
610644034 发表于 2023-7-2 23:15
() 问题
Program Files (x86) 目录包含字符串与批处理识别的字符串冲突了!

看不到冲突,可以指出吗
作者: batche    时间: 2023-7-3 10:23
610644034 发表于 2023-7-2 23:15
() 问题
Program Files (x86) 目录包含字符串与批处理识别的字符串冲突了!

不会的,因为用引号引起来了
作者: wenbieba    时间: 2023-7-3 22:06
本帖最后由 wenbieba 于 2023-7-3 22:07 编辑
gailium  2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

findstr /ilc
i与I均为无视大小写,重复不

作者: wenbieba    时间: 2023-7-3 22:17
gailium 发表于 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

findstr /ilc为完整写法,谢谢
作者: gailium    时间: 2023-7-3 22:24
wenbieba 发表于 2023-7-3 22:06
findstr /ilc
i与I均为无视大小写,重复不

一个是小写的L...
作者: wenbieba    时间: 2023-7-4 08:28
wenbieba 发表于 2023-7-2 22:59
大师是不可以像这样无限加
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "% ...

for /D %%i in ("C:\") DO (
        if not %%i== Program Files\Windows Defender(
                if not %%i==Program Files(x86)\ Windows Defender(
                        echo 删文件夹:%%i
                        rd /S /Q %%i
                )
大佬这种写法对吗

作者: jpt    时间: 2023-7-4 08:33

作者: conlin888    时间: 2023-7-4 16:24
给点建议:
1. 批处理问题发在脚本区会得到更多的帮助.
2. 楼主给出的批处理脚本太危险, rd为敏感命令, 会删除文件夹. 多用echo.

@echo off
for /f  "delims=" %%i in ('echo "C:\Program Files"^&echo "C:\Program Files (x86)"') DO (
   if exist "%%~i\Windows Defender\" echo 删文件夹:"%%~i\Windows Defender"
)
pause
作者: D0D    时间: 2023-7-4 16:39
JERRY爱电脑 发表于 2023-7-2 20:01
ChatGPT的回答:
这段批处理代码有几个潜在的错误。下面是经过修正后的代码:

ChatGPT都可以修改代码了?那它能不能给自己做代码优化
作者: wenbieba    时间: 2023-7-8 13:52
gailium 发表于 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

大佬麻烦再辛苦一下,这个命令会进入Windows Defender的子目录,把子目录下的文件夹进行删除,这样一来就形成了二次删除,导致大量提示找不到路径,可不可以直接删除Windows Defender,直接夺权Windows Defender文件夹,不要进入子目录或子目录下的子目录




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