标题: [文件操作] (已解决)求助,批处理的删除代码不管用 [打印本页]
作者: 工具人 时间: 2023-5-21 18:52 标题: (已解决)求助,批处理的删除代码不管用
本帖最后由 工具人 于 2023-5-23 17:17 编辑
- @ECHO OFF
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
-
- if "%1"=="hide" goto CmdBegin
- start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
- :CmdBegin
-
- ::新用户与用户密码永不过期
- net accounts /maxpwage:unlimited
-
-
- ::自定义功能:进桌面后删除*驱动*图标 把常用软件放到 “$OEM$\$1\Data\DIY” 文件夹可以自动安装常用软件(看个人喜好加上参数自动安装,举个例子搜狗输入法的是/S)需要啥自己添加
- if exist %Public%\Desktop\*驱动*.lnk del %Public%\Desktop\*驱动*.lnk
-
-
- ::自定义功能:进桌面后删除*驱动*图标 把常用软件放到 “$OEM$\$1\Data\DIY” 文件夹可以自动安装常用软件(看个人喜好加上参数自动安装,举个例子搜狗输入法的是/S)需要啥自己添加
- if exist %Public%\Desktop\*驱动*.lnk del %Public%\Desktop\*驱动*.lnk
-
- if exist C:\Data\DIY\搜狗拼音.exe C:\Data\DIY\搜狗拼音.exe /S
- :: if exist 路径,意思为如果有则执行,可带参数
- if exist C:\Data\DIY\安装StartIsBackwin10.bat C:\Data\DIY\安装StartIsBackwin10.bat
- if exist C:\Data\DIY\00.bat C:\Data\DIY\00.bat
-
-
-
- :: 【10秒后清理临时文件】
- choice /t 10 /d y /n >nul
- rd C:\Data /s/q
- ::重启资源管理器
- ::start /wait taskkill /f /im explorer.exe & start explorer.exe
- del %0
- 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 了
作者: yakeyun 时间: 2023-5-21 20:06
回复 1# 工具人 - @echo off & setlocal enabledelayedexpansion
- cd /d "%~dp0"
-
- %1 %2
- ver|find "5.">nul&&goto :Admin
- mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
- :Admin
- net accounts /maxpwage:unlimited
-
- if exist %Public%\Desktop\*驱动*.lnk (del %Public%\Desktop\*驱动*.lnk)
- if exist C:\Data\DIY\搜狗拼音.exe (C:\Data\DIY\搜狗拼音.exe /S)
- if exist C:\Data\DIY\安装StartIsBackwin10.bat (C:\Data\DIY\安装StartIsBackwin10.bat)
- if exist C:\Data\DIY\00.bat (C:\Data\DIY\00.bat)
-
- timeout -t 10 >nul
- if exist C:\Data (
- del C:\Data /f /s /q
- rd C:\Data /s /q
- )
- start /w taskkill /f /im explorer.exe && start explorer.exe
- del %0
- exit
复制代码
作者: czjt1234 时间: 2023-5-21 20:07
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
作者: czjt1234 时间: 2023-5-21 20:08
cd /d c:\
rd C:\Data /s/q
先切换目录,避免当前目录为 C:\Data 时无法删除
作者: 工具人 时间: 2023-5-21 20:50
回复 4# czjt1234
批处理的路径%SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\GFD.cmd,在这里时无法自我删除
作者: 工具人 时间: 2023-5-21 20:53
回复 2# yakeyun
换了获取管理员权限的部分吗?因为C盘根目录和启动目录所在路径需要管理员权限才能删除吗?
作者: yakeyun 时间: 2023-5-21 21:26
回复 6# 工具人
换了提权方法,这个提权方法是测试了好几个方案后,最有效的一个。
作者: czjt1234 时间: 2023-5-22 09:06
可能是四五六行重新启动了批处理,第二行获取的管理员权限没了- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit
复制代码
把四五六行去掉,再第二行把1改成0试试
作者: 工具人 时间: 2023-5-22 10:09
重新试了一下,单独运行删除没问题,但一加上if exist C:\Data\DIY\00.bat call C:\Data\DIY\00.bat
这一行,就无法自我删除了,00.bat是运行成功的
作者: yakeyun 时间: 2023-5-22 10:38
回复 9# 工具人
Call 的对象如果是批处理,批处理代码中不要开变量延迟命令。
作者: 工具人 时间: 2023-5-22 13:22
@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
好像找到原因了,00.bat运行后是管理员权限,此时无法被删除,后面的都被卡住了,刚才删除了获取管理员权限的部分就能正常删除了
作者: buyiyang 时间: 2023-5-22 14:03
回复 11# 工具人
问题在&&exit,把它删掉
作者: 77七 时间: 2023-5-22 14:03
本帖最后由 77七 于 2023-5-22 14:45 编辑
- if exist C:\Data\DIY\00.bat (
- start /wait C:\Data\DIY\00.bat
- )
复制代码
打开个新窗口,等00.bat结束再删除
好像有点问题,测试结果先后不同...
作者: 工具人 时间: 2023-5-22 14:21
回复 14# 77七
这样有用,不过还要把00.bat最后一行goto :eof改成exit才行,多谢各位帮助
作者: 工具人 时间: 2023-5-22 14:24
以前用goto :eof和exit执行作用一样,没想到在这会有影响。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |