Bat文件删除它自己的文件夹

时间:2014-07-23 08:32:38

标签: windows batch-file directory

我有一个文件夹测试,其中包含一些其他文件和文件夹。我还有一个bat文件delete.bat

测试 测试\ delete.bat

bat文件使用下一个命令删除test的内容: rmdir C:\ test / s / q

我也想删除文件夹测试。如果我复制delet.bat文件并将其粘贴到另一个目录中,则将删除测试文件夹。

但是,如果我在测试文件夹中运行delete.bat文件,测试文件夹的所有内容(包括delete.bat文件)都会被删除,但测试文件夹不会被删除。

我认为这是因为测试文件夹已打开。

有什么建议吗?是否有任何命令我可以在开头添加如果delete.bat以便先关闭文件夹然后运行命令rmdir C:\ test / s / q?

2 个答案:

答案 0 :(得分:2)

以下delete.bat可以正常使用Windows中的win+R运行它。

cd c:\
rmdir C:\test /s /q

答案 1 :(得分:1)

确定,

Sasha_gud帮了很多忙。

现在我找到了一种在bat文件中添加代码以便以管理员身份运行的方法(因此以管理员身份运行将自动运行)。

有关详细信息,请参阅 How can I auto-elevate my batch file, so that it requests from UAC administrator rights if required?

以下是代码:

:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
@echo off
CLS 
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges 
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges)  
ECHO. 
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation 
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >>     "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .

REM Run shell as admin (example) - put here code as you like

cd c:\
rmdir C:\Users\haris\Desktop\test /s /q

只有最后两行是我的代码。