找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 47639|回复: 15

[文件操作] (已解决)求助,批处理的删除代码不管用

[复制链接]
发表于 2023-5-21 18:52:13 | 显示全部楼层 |阅读模式
本帖最后由 工具人 于 2023-5-23 17:17 编辑
  1. @ECHO OFF
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

  3. if "%1"=="hide" goto CmdBegin
  4. start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
  5. :CmdBegin

  6. ::新用户与用户密码永不过期
  7. net accounts /maxpwage:unlimited


  8. ::自定义功能:进桌面后删除*驱动*图标 把常用软件放到 “$OEM$\$1\Data\DIY” 文件夹可以自动安装常用软件(看个人喜好加上参数自动安装,举个例子搜狗输入法的是/S)需要啥自己添加
  9. if exist %Public%\Desktop\*驱动*.lnk del %Public%\Desktop\*驱动*.lnk


  10. ::自定义功能:进桌面后删除*驱动*图标 把常用软件放到 “$OEM$\$1\Data\DIY” 文件夹可以自动安装常用软件(看个人喜好加上参数自动安装,举个例子搜狗输入法的是/S)需要啥自己添加
  11. if exist %Public%\Desktop\*驱动*.lnk del %Public%\Desktop\*驱动*.lnk

  12. if exist C:\Data\DIY\搜狗拼音.exe C:\Data\DIY\搜狗拼音.exe /S
  13. :: if exist 路径,意思为如果有则执行,可带参数
  14. if exist C:\Data\DIY\安装StartIsBackwin10.bat C:\Data\DIY\安装StartIsBackwin10.bat
  15. if exist C:\Data\DIY\00.bat C:\Data\DIY\00.bat



  16. :: 【10秒后清理临时文件】
  17. choice /t 10 /d y /n >nul
  18. rd C:\Data /s/q
  19. ::重启资源管理器
  20. ::start /wait taskkill /f /im explorer.exe & start explorer.exe
  21. del %0
  22. exit
复制代码
批处理路径在%SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\GFD.cmd",最后的删除文件夹和自身的代码总是无效,
还有if exist C:\Data\DIY\00.bat C:\Data\DIY\00.bat这一行,曾经成功启动过,后来怎么都无法启动这个00.bat 了

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-5-21 20:06:07 | 显示全部楼层
回复 1# 工具人
  1. @echo off & setlocal enabledelayedexpansion
  2. cd /d "%~dp0"

  3. %1 %2
  4. ver|find "5.">nul&&goto :Admin
  5. mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
  6. :Admin
  7. net accounts /maxpwage:unlimited

  8. if exist %Public%\Desktop\*驱动*.lnk (del %Public%\Desktop\*驱动*.lnk)
  9. if exist C:\Data\DIY\搜狗拼音.exe (C:\Data\DIY\搜狗拼音.exe /S)
  10. if exist C:\Data\DIY\安装StartIsBackwin10.bat (C:\Data\DIY\安装StartIsBackwin10.bat)
  11. if exist C:\Data\DIY\00.bat (C:\Data\DIY\00.bat)

  12. timeout -t 10 >nul
  13. if exist C:\Data (
  14. del C:\Data /f /s /q
  15. rd C:\Data /s /q
  16. )
  17. start /w taskkill /f /im explorer.exe && start explorer.exe
  18. del %0
  19. exit
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2023-5-21 20:07:10 | 显示全部楼层
if exist C:\Data\DIY\安装StartIsBackwin10.bat call C:\Data\DIY\安装StartIsBackwin10.bat
if exist C:\Data\DIY\00.bat call C:\Data\DIY\00.bat

要加 call
发表于 2023-5-21 20:08:04 | 显示全部楼层
cd /d c:\
rd C:\Data /s/q

先切换目录,避免当前目录为 C:\Data 时无法删除
 楼主| 发表于 2023-5-21 20:50:07 | 显示全部楼层
回复 4# czjt1234


    批处理的路径%SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\GFD.cmd,在这里时无法自我删除
 楼主| 发表于 2023-5-21 20:53:54 | 显示全部楼层
回复 2# yakeyun


    换了获取管理员权限的部分吗?因为C盘根目录和启动目录所在路径需要管理员权限才能删除吗?
发表于 2023-5-21 21:26:38 | 显示全部楼层
回复 6# 工具人


换了提权方法,这个提权方法是测试了好几个方案后,最有效的一个。
发表于 2023-5-22 09:06:17 | 显示全部楼层
可能是四五六行重新启动了批处理,第二行获取的管理员权限没了
  1. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit
复制代码
把四五六行去掉,再第二行把1改成0试试
 楼主| 发表于 2023-5-22 10:09:41 | 显示全部楼层
重新试了一下,单独运行删除没问题,但一加上if exist C:\Data\DIY\00.bat call C:\Data\DIY\00.bat
这一行,就无法自我删除了,00.bat是运行成功的
发表于 2023-5-22 10:38:08 | 显示全部楼层
回复 9# 工具人


Call 的对象如果是批处理,批处理代码中不要开变量延迟命令。
 楼主| 发表于 2023-5-22 13:22:41 | 显示全部楼层
@Echo Off
::管理员身份运行
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c pushd ""%~dp0"" && ""%~s0"" ::","","runas",1)(window.close)&&exit

copy 一键统管.exe C:\Users\Public\Desktop\

goto :eof

00.bat的内容就这个这些,复制一个文件,没有别的部分
 楼主| 发表于 2023-5-22 13:43:38 | 显示全部楼层
好像找到原因了,00.bat运行后是管理员权限,此时无法被删除,后面的都被卡住了,刚才删除了获取管理员权限的部分就能正常删除了
发表于 2023-5-22 14:03:01 | 显示全部楼层
回复 11# 工具人


    问题在&&exit,把它删掉
发表于 2023-5-22 14:03:33 | 显示全部楼层
本帖最后由 77七 于 2023-5-22 14:45 编辑
  1. if exist C:\Data\DIY\00.bat (
  2.         start /wait C:\Data\DIY\00.bat
  3. )
复制代码

打开个新窗口,等00.bat结束再删除
好像有点问题,测试结果先后不同...
 楼主| 发表于 2023-5-22 14:21:20 | 显示全部楼层
回复 14# 77七


    这样有用,不过还要把00.bat最后一行goto :eof改成exit才行,多谢各位帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:29 , Processed in 0.018639 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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