admin管理员组文章数量:1567263
牛皮藓文件
该文件是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 )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
%以下是删除命令(中文文件夹需要手动打开管理员cmd输入命令)%
takeown /F "文件夹绝对路径" /A /R /D Y
icacls "文件夹绝对路径" /T /grant administrators:F
rd /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 )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
%以下写要执行的命令%
%删除文件命令(中文文件夹需要手动打开管理员cmd输入命令)%
takeown /F "D:\ab" /A /R /D Y
icacls "D:\ab" /T /grant administrators:F
rd /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盘占位置,每次安软件自己选路径就可以了)
如果对你有帮助,辛苦点个赞吧。
版权声明:本文标题:D盘出现如同Program Files等因为权限问题而删除不掉的文件,可以使用bat文件强行删除 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1726962924a1092093.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论