1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > D盘出现如同Program Files等因为权限问题而删除不掉的文件 可以使用bat文件强行删除

D盘出现如同Program Files等因为权限问题而删除不掉的文件 可以使用bat文件强行删除

时间:2019-06-17 06:28:29

相关推荐

D盘出现如同Program Files等因为权限问题而删除不掉的文件 可以使用bat文件强行删除

牛皮藓文件

该文件是Windows系统存放的应用文件,和WindowsApps(安装应用的文件)一样,都是用户无法删除的,如果想删除,只能通过其他方式。(注意:里面没东西才能删,否则容易出问题,其他文件夹也能用下面的方法删。)

bat删除文件方式

新建txt文件,输入以下代码。填写要删除的绝对路径名(如 E:\文件),将后缀修改为bat,双击运行即可。(注意:删除后不可逆!!!)

%以下是将该bat文件以管理员运行%@echo off>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin ):UACPromptecho Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs""%temp%\getadmin.vbs"exit /B:gotAdminif exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )pushd "%CD%"CD /D "%~dp0"%以下是删除命令(中文文件夹需要手动打开管理员cmd输入命令)%takeown /F "文件夹绝对路径" /A /R /D Yicacls "文件夹绝对路径" /T /grant administrators:Frd /s /q "文件夹绝对路径"

注意!!!修改上面文件中的路径

Java方式

但每次都要修改bat文件里的三个地方未免太复杂,不如使用Java的I/O流来动态生成并运行,这样就只需要输入一次路径即可,代码如下。

import java.io.*;import java.util.Scanner;/*** @version 2.0* @package com.spring_Let*/public class DynamicallyForceDeleteFolder {public static void main(String[] args) {/*%以下是将该bat文件以管理员运行%@echo off>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin ):UACPromptecho Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs""%temp%\getadmin.vbs"exit /B:gotAdminif exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )pushd "%CD%"CD /D "%~dp0"%以下写要执行的命令%%删除文件命令(中文文件夹需要手动打开管理员cmd输入命令)%takeown /F "D:\ab" /A /R /D Yicacls "D:\ab" /T /grant administrators:Frd /s /q "D:\ab"*/Scanner sc = new Scanner(System.in);System.out.print("输入需要删除的文件夹的绝对路径:");String delFilePath = sc.nextLine();//先检测文件夹是否存在if (!new File(delFilePath).exists()) {System.out.print("文件夹不存在!");return;}if (!normalDeletion(delFilePath)) {System.out.println("删除成功!");return;}//直接用File进行删除,如果删除不掉,再使用管理员强行删除System.out.println("普通删除失败,使用强制删除...");String cmd = "%以下是将该bat文件以管理员运行%\r\n" +"@echo off\r\n" +">nul 2>&1 \"%SYSTEMROOT%\\system32\\cacls.exe\" \"%SYSTEMROOT%\\system32\\config\\system\"\r\n" +"if '%errorlevel%' NEQ '0' (\r\n" +"goto UACPrompt\r\n" +") else ( goto gotAdmin )\r\n" +":UACPrompt\r\n" +"echo Set UAC = CreateObject^(\"Shell.Application\"^) > \"%temp%\\getadmin.vbs\"\r\n" +"echo UAC.ShellExecute \"%~s0\", \"\", \"\", \"runas\", 1 >> \"%temp%\\getadmin.vbs\"\r\n" +"\"%temp%\\getadmin.vbs\"\r\n" +"exit /B\r\n" +":gotAdmin\r\n" +"if exist \"%temp%\\getadmin.vbs\" ( del \"%temp%\\getadmin.vbs\" )\r\n" +"pushd \"%CD%\"\r\n" +"CD /D \"%~dp0\"\r\n" +"\r\n" +"%删除文件命令(中文文件夹需要手动打开管理员cmd输入命令)%\r\n" +"takeown /F \"" + delFilePath + "\" /A /R /D Y\r\n" +" icacls \"" + delFilePath + "\" /T /grant administrators:F\r\n" +" rd /s /q \"" + delFilePath + "\"";//这里会将bat文件写入到D盘,没有D盘则将D改为C,写入不了就用管理员运行String batFilePath = "D:\\Force deletion of file - spring.bat";sc.close();creatBAT(cmd, batFilePath);runBat(batFilePath);}//普通删除public static boolean normalDeletion(String delFilePath) {File f = new File(delFilePath);f.delete();return f.exists();}/*** 将要执行的批处理命令写入到目标bat文件中** @param cmd 批处理命令* @param batFilePath bat文件路径*/public static void creatBAT(final String cmd, final String batFilePath) {try {File f = new File(batFilePath);if (f.isDirectory() && f.exists()) {if (f.delete())System.out.println("已删除原" + batFilePath + "文件夹!");else {System.out.println("删除原文件夹失败!");return;}}// 定义编码OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f), "GBK");BufferedWriter writer = new BufferedWriter(write);writer.write(cmd);writer.close();write.close();} catch (Exception e) {System.out.println("写文件内容操作出错");e.printStackTrace();}}/*** 运行bat文件** @param batFilePath bat文件地址*/public static void runBat(String batFilePath) {try {Process ps = Runtime.getRuntime().exec(batFilePath);InputStream in = ps.getInputStream();if (in.read() != -1) {in.close();ps.waitFor();}Thread.sleep(1000);} catch (IOException ioe) {ioe.printStackTrace();} catch (InterruptedException e) {//TODO Auto-generated catch block e.printStackTrace();}System.out.println("删除完成");//运行后删除bat文件File f = new File(batFilePath);if (f.exists()) {f.delete();}}}

删除后又出现?

如果Windows的文件夹删除后又出现,应该是设置了保存新内容的位置,去修改回来就可以了。(ps:不用担心放到C盘占位置,每次安软件自己选路径就可以了)

如果对你有帮助,辛苦点个赞吧。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。