我有一个文件夹测试,其中包含一些其他文件和文件夹。我还有一个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?
答案 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
只有最后两行是我的代码。