让bat批处理以管理员权限运行的实现方法

1、第一种方法

有的电脑是非管理员登录,运行程序时,需要提示是否运行运行。解决方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@ echo off
%1 %2
ver|find "5.">nul&&goto :Admin
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
:Admin
//在你的bat开头加上上面的命令即可
//下面是你需要执行的命令
set path=%~dp0
echo install mysql service...
echo %path%
cd %path%\bin\
mysqld.exe --remove mysql
mysqld.exe --install mysql
echo start mysql Serviceo
"%SystemRoot%"\system32\net start mysql

2、bat脚本获取管理员权限

1
2
3
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

写在bat文件的顶端就可以实现。

3、bat脚本中以管理员权限执行命令

在bat脚本文件第一行加上下面命令:

1
%1 mshta vbscript:CreateObject(“Shell.Application”).ShellExecute(“cmd.exe”,"/c %~s0 ::","",“runas”,1)(window.close)&&exit

4、自动以管理员身份运行批处理(bat)文件

在日常运维工作中,为方便对windows用户进行系统安装或配置等,使用Windows自带的批处理(bat文件)是一种最为简单快速的方法。

但是,批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名为”XXXXXX(请右键点击,用管理员身份运行!).bat”,但总有些用户会忽略这条提示,直接运行,此时由于权限不足,导致脚本运行失败。我们可以使用一种变通的方法,让bat启动时,首先调用vbs脚本,通过vbs脚本,以管理员身份调用该bat的 runas 部分

我们的脚本可以写在runas 下,这样就点击该bat脚本,就可以已管理员身份运行了

示例代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@ECHO OFF
setlocal EnableDelayedExpansion
color 3e
title 添加服务配置
 
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
 
::填写自己的脚本
 
echo 执行完毕,任意键退出
 
pause >nul
exit

5、以管理员权限执行bat脚本

只需要在你编写的.bat文件的开头加上以下脚本,然后双击.bat文件即是以管理员权限执行

1
2
3
4
5
6
7
8
9
10
11
@echo off&color 17
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 当前运行路径是:%CD%
echo 已获取管理员权限

6、如何让BAT和CMD批处理以管理员身份运行

如何让BAT和CMD批处理以管理员身份运行?

有些批处理需要很高的权限执行才能达到我们所需要的效果,

将以下代码放入批处理最顶部就可以实现以管理员身份运行了。

1
2
3
4
5
6
7
8
9
10
11
12
@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" )

7、命令行CMD批处理自动以管理员身份运行的正确方法

修正了路径有空格时的问题

在批处理开头加上:

适用于无参数

%1 mshta vbscript:CreateObject(“Shell.Application”).ShellExecute(“cmd.exe”,”/c “^&chr(34)^&”%~0″^&chr(34)^&” ::”,”%cd%”,”runas”,1)(window.close)&&exit

适用于一参数

%2 mshta vbscript:CreateObject(“Shell.Application”).ShellExecute(“cmd.exe”,”/c “^&chr(34)^&”%~0″^&chr(34)^&” “^&chr(34)^&”%~1″^&chr(34)^&” ::”,”%cd%”,”runas”,1)(window.close)&&exit

更多参数的以此类推
运行批处理时多加一个参数::,这句就不会执行
为了兼容8.3短路径,可把%~0等换成%~s0
理论上是没问题,但启动路径有时不可靠,之后可能还要pushdcd /d

8、bat文件以管理员权限运行的几种方式

1、创建bat快捷方式,然后右键快捷方式–>properties–>advanced–>Run as administrator。
2、下载bat转成exe工具,将bat转成exe,然后右键exe–>properties–>Compatibility–>Run as administrator。
3、以管理员权限运行cmd,然后dos框中运行相应的bat。

原文地址:

https://www.jb51.net/article/193692.htm

 

批处理命令,清除系统所有临时文件

@echo off
echo Copyright 2021
echo Clear system junk files ……
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q “%userprofile%\Local Settings\Temporary Internet Files\*.*”
del /f /s /q “%userprofile%\Local Settings\Temp\*.*”
del /f /s /q “%userprofile%\recent\*.*”
echo Successfully cleared system junk files.
echo Copyright 2021
echo. & pause

批处理利用sc禁用和启用服务

批处理利用sc禁用和启用服务
sc config 服务名称 start= auto(自动)
sc config 服务名称 start=
demand(手动)
sc config 服务名称 start= disabled(禁用)
然后配合 net start 服务名称或者 net
stop 服务名称 来使用

例子:
sc config shellhwdetection start= disabled
禁用shellhwdetection服务。
sc config shellhwdetection start= auto
设置shellhwdetection服务自动启动。
sc config shellhwdetection start= demand
设置shellhwdetection服务手动启动。
sc start
shellhwdetection                              启动shellhwdetection服务。
sc stop
shellhwdetection                              停止shellhwdetection服务。
sc delete
shellhwdetection                           删除shellhwdetection服务。
sc create
Tomcat binPath= F:\apache-tomcat\bin\startup.bat start= auto     添加Tomcat服务。

sc config MSSQL$SQLEXPRESS start= auto           设置SQL Server
(SQLEXPRESS)服务自动启动
sc config MSSQL$SQLEXPRESS start= demand     设置SQL Server
(SQLEXPRESS)服务手动启动
sc config MSSQL$SQLEXPRESS start= disabled     禁用SQL
Server (SQLEXPRESS)服务
net start “SQL Server (SQLEXPRESS)”
启动SQL Server (SQLEXPRESS)服务
net stop “SQL Server
(SQLEXPRESS)”                   停止SQL Server (SQLEXPRESS)服务
net pause “SQL
Server (SQLEXPRESS)”                暂停SQL Server
(SQLEXPRESS)服务
(如果服务名由两个或多个单词组成,必须用引号把该服务名圈起来,如:sc config “ECShop httpd”
start= demand)

sc config MSISerer start= demand & net start “Windows Installer”
意思是:将
Windows Installer 服务设置为手动并启动该服务(Windows
Installer的真实服务名是MSISerer)

注:
★★1)服务名不一定是你在服务面板看到的那个名。
例如,你要打开被禁用的telnet服务,sc config
telnet start= auto,会报错:[SC] OpenService FAILED
1060,因为telnet的服务名不是telnet而是tlntsvr,改为sc config tlntsvr start= auto就OK了,在服务里查看telnet服务的属性,在属性框的最上面可看到真正的服务名,即命令中的服务名。

2)start=后面有一个空格,如果不加这个空格,命令就无法执行,而且连错误提示也没有, 等号后加一个空格就好了.

 

其它见微软官方说明:
http://technet.microsoft.com/zh-cn/library/cc772676(WS.10).aspx#BKMK_config