[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 工具人 于 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 了
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

以前用goto :eof和exit执行作用一样,没想到在这会有影响。

TOP

回复 14# 77七


    这样有用,不过还要把00.bat最后一行goto :eof改成exit才行,多谢各位帮助

TOP

本帖最后由 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结束再删除
好像有点问题,测试结果先后不同...
bat小白,请多指教!谢谢!

TOP

回复 11# 工具人


    问题在&&exit,把它删掉

TOP

好像找到原因了,00.bat运行后是管理员权限,此时无法被删除,后面的都被卡住了,刚才删除了获取管理员权限的部分就能正常删除了

TOP

@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的内容就这个这些,复制一个文件,没有别的部分

TOP

回复 9# 工具人


Call 的对象如果是批处理,批处理代码中不要开变量延迟命令。

TOP

重新试了一下,单独运行删除没问题,但一加上if exist C:\Data\DIY\00.bat call C:\Data\DIY\00.bat
这一行,就无法自我删除了,00.bat是运行成功的

TOP

可能是四五六行重新启动了批处理,第二行获取的管理员权限没了
  1. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit
复制代码
把四五六行去掉,再第二行把1改成0试试

QQ 20147578

TOP

回复 6# 工具人


换了提权方法,这个提权方法是测试了好几个方案后,最有效的一个。

TOP

回复 2# yakeyun


    换了获取管理员权限的部分吗?因为C盘根目录和启动目录所在路径需要管理员权限才能删除吗?

TOP

回复 4# czjt1234


    批处理的路径%SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\GFD.cmd,在这里时无法自我删除

TOP

cd /d c:\
rd C:\Data /s/q

先切换目录,避免当前目录为 C:\Data 时无法删除

QQ 20147578

TOP

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

QQ 20147578

TOP

返回列表