无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5723|回复: 31
打印 上一主题 下一主题

[求助] 这个批出里什么地方有问题

[复制链接]
跳转到指定楼层
1#
发表于 2023-7-2 19:52:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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" )
2#
发表于 2023-7-2 20:01:56 | 只看该作者
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. )
复制代码
以下是对代码所做的更改说明:
  • 在第一行添加了 @echo off,这将关闭批处理的命令回显,使输出更加清晰。
  • 修复了 for /f 命令中的 ^> 和 ^| 之间的空格,确保管道和重定向符号正常工作。
  • 在 takeown 和 icacls 命令之前移除了 cmd.exe /c,因为这两个命令可以直接在批处理脚本中执行。
  • 在 RD /Q /S 命令之前添加了两个空格,确保命令正确执行。

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





点评

刚运行了大佬修改的批处理,现在唯一问题会误删其他文件夹,  详情 回复 发表于 2023-7-2 20:20
回复

使用道具 举报

3#
 楼主| 发表于 2023-7-2 20:20:14 | 只看该作者
JERRY爱电脑 发表于 2023-7-2 20:01
ChatGPT的回答:
这段批处理代码有几个潜在的错误。下面是经过修正后的代码:

刚运行了大佬修改的批处理,现在唯一问题会误删其他文件夹,

点评

findstr改成findstr /ilc:"Windows Defender"  详情 回复 发表于 2023-7-2 21:32
回复

使用道具 举报

4#
发表于 2023-7-2 20:47:09 | 只看该作者
二楼的厉害,竟然 使用智能了。

点评

麻烦大师看看  详情 回复 发表于 2023-7-2 20:48
回复

使用道具 举报

5#
 楼主| 发表于 2023-7-2 20:48:19 | 只看该作者
zwmfyy 发表于 2023-7-2 20:47
二楼的厉害,竟然 使用智能了。

麻烦大师看看
回复

使用道具 举报

6#
发表于 2023-7-2 21:32:42 | 只看该作者
wenbieba 发表于 2023-7-2 20:20
刚运行了大佬修改的批处理,现在唯一问题会误删其他文件夹,

findstr改成findstr /ilc:"Windows Defender"

点评

不行的,找不到路径文件  详情 回复 发表于 2023-7-2 22:17
回复

使用道具 举报

7#
发表于 2023-7-2 21:34:14 | 只看该作者
我都不懂这些!但是我也知道你的参数用多了!
直接扫描整个C盘,然后把里面含有杀毒同名字的文件名,
复制到第三方文件!
然后提权删除第三方文件里面含有杀毒同名字的文件!
回复

使用道具 举报

8#
 楼主| 发表于 2023-7-2 22:17:44 | 只看该作者
gailium 发表于 2023-7-2 21:32
findstr改成findstr /ilc:"Windows Defender"

不行的,找不到路径文件

点评

找不到路径那是dir /ad /b /s  详情 回复 发表于 2023-7-2 22:19
回复

使用道具 举报

9#
发表于 2023-7-2 22:19:54 | 只看该作者
wenbieba 发表于 2023-7-2 22:17
不行的,找不到路径文件

找不到路径那是dir /ad /b /s

点评

还是不行,一闪而过  详情 回复 发表于 2023-7-2 22:25
回复

使用道具 举报

10#
发表于 2023-7-2 22:23:12 | 只看该作者
@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

点评

大佬麻烦再辛苦一下,这个命令会进入Windows Defender的子目录,把子目录下的文件夹进行删除,这样一来就形成了二次删除,导致大量提示找不到路径,可不可以直接删除Windows Defender,直接夺权Windows Defender文件  详情 回复 发表于 2023-7-8 13:52
findstr /ilc为完整写法,谢谢  详情 回复 发表于 2023-7-3 22:17
findstr /ilc iСд IСд  详情 回复 发表于 2023-7-3 22:06
如果在给加上删除这个文件夹Windows Security Health,给什么地方添加  详情 回复 发表于 2023-7-2 22:31
成功了,谢谢  详情 回复 发表于 2023-7-2 22:29
回复

使用道具 举报

11#
 楼主| 发表于 2023-7-2 22:25:21 | 只看该作者
gailium 发表于 2023-7-2 22:19
找不到路径那是dir /ad /b /s

还是不行,一闪而过
回复

使用道具 举报

12#
 楼主| 发表于 2023-7-2 22:29:32 | 只看该作者
gailium 发表于 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

成功了,谢谢

点评

恭喜恭喜问题解决  详情 回复 发表于 2023-7-2 22:55
回复

使用道具 举报

13#
发表于 2023-7-2 22:29:40 | 只看该作者
@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

点评

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

使用道具 举报

14#
 楼主| 发表于 2023-7-2 22:31:38 | 只看该作者
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,给什么地方添加
回复

使用道具 举报

15#
 楼主| 发表于 2023-7-2 22:35:12 | 只看该作者
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,给什么地方添加

点评

@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  详情 回复 发表于 2023-7-2 22:48
回复

使用道具 举报

16#
发表于 2023-7-2 22:48:36 来自手机 | 只看该作者
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

点评

大师是不可以像这样无限加 for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\Microsoft" 2^>nul ^| find /i "Windows"')  详情 回复 发表于 2023-7-2 22:59
大佬辛苦了,谢谢大佬热情回复  详情 回复 发表于 2023-7-2 22:51
回复

使用道具 举报

17#
 楼主| 发表于 2023-7-2 22:51:44 | 只看该作者
conlin888 发表于 2023-7-2 22:48
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Pr ...

大佬辛苦了,谢谢大佬热情回复
回复

使用道具 举报

18#
发表于 2023-7-2 22:55:48 | 只看该作者

恭喜恭喜问题解决

点评

非常感谢各位大佬热心答复解决问题,折腾两天了  详情 回复 发表于 2023-7-2 23:01
回复

使用道具 举报

19#
 楼主| 发表于 2023-7-2 22:59:40 | 只看该作者
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"
)

点评

for /D %%i in ("C:\") DO ( if not %%i== Program Files\Windows Defender( if not %%i==Program Files(x86)\ Windows Defender( echo 删文件夹:%%i  详情 回复 发表于 2023-7-4 08:28
我也是菜鸟,互相学习。 少了两个)。 @echo off for /f "delimsfor /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Program Files (x86)" "%SystemDrive%\ProgramData\M  详情 回复 发表于 2023-7-2 23:12
回复

使用道具 举报

20#
 楼主| 发表于 2023-7-2 23:01:44 | 只看该作者
yyz2191958 发表于 2023-7-2 22:55
恭喜恭喜问题解决

非常感谢各位大佬热心答复解决问题,折腾两天了
回复

使用道具 举报

21#
发表于 2023-7-2 23:12:15 来自手机 | 只看该作者
本帖最后由 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
回复

使用道具 举报

22#
发表于 2023-7-2 23:15:57 | 只看该作者

Program Files (x86)

本帖最后由 610644034 于 2023-7-2 23:17 编辑

() 问题
Program Files (x86) 目录包含字符串与批处理识别的字符串冲突了!

点评

不会的,因为用引号引起来了  详情 回复 发表于 2023-7-3 10:23
看不到冲突,可以指出吗  详情 回复 发表于 2023-7-2 23:33
回复

使用道具 举报

23#
 楼主| 发表于 2023-7-2 23:33:17 | 只看该作者
610644034 发表于 2023-7-2 23:15
() 问题
Program Files (x86) 目录包含字符串与批处理识别的字符串冲突了!

看不到冲突,可以指出吗
回复

使用道具 举报

24#
发表于 2023-7-3 10:23:26 | 只看该作者
610644034 发表于 2023-7-2 23:15
() 问题
Program Files (x86) 目录包含字符串与批处理识别的字符串冲突了!

不会的,因为用引号引起来了
回复

使用道具 举报

25#
 楼主| 发表于 2023-7-3 22:06:10 来自手机 | 只看该作者
本帖最后由 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均为无视大小写,重复不

点评

一个是小写的L...  详情 回复 发表于 2023-7-3 22:24
回复

使用道具 举报

26#
 楼主| 发表于 2023-7-3 22:17:30 | 只看该作者
gailium 发表于 2023-7-2 22:23
@echo off
for /f "delims=" %%i in ('dir /b /ad /s "%SystemDrive%\Program Files" "%SystemDrive%\Prog ...

findstr /ilc为完整写法,谢谢
回复

使用道具 举报

27#
发表于 2023-7-3 22:24:56 | 只看该作者
wenbieba 发表于 2023-7-3 22:06
findstr /ilc
i与I均为无视大小写,重复不

一个是小写的L...
回复

使用道具 举报

28#
 楼主| 发表于 2023-7-4 08:28:53 | 只看该作者
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
                )
大佬这种写法对吗
回复

使用道具 举报

29#
发表于 2023-7-4 08:33:21 | 只看该作者
回复

使用道具 举报

30#
发表于 2023-7-4 16:24:41 | 只看该作者
给点建议:
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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-31 14:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表