码上焚香

Yahocen

bat 脚本片段收藏

54
2024-01-29

此文章记录下经常用到的 bat 脚本片段,以备不时之需

隐藏CMD窗口运行脚本

将此片段加入bat脚本头部,cmd会在启动时闪烁一下随即隐藏运行

:: 隐藏当前窗口
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin

自动申请管理员权限

一下片段会自动检测当前窗口是否有管理员权限,有则直接跳转至 run 部分继续执行,没有则主动申请管理员权限并重新运行当前脚本

@echo off
setlocal
:: 检查权限
net session >nul 2>&1
if %errorLevel% == 0 (
    goto :run
)
:: 尝试以管理员权限重启脚本
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:run
:: 获取到管理员权限后运行此处代码

启动当前目录下的exe程序并携带参数

这里主要记录是 start 命令启动程序时,程序参数必须使用双引号

start /b "自定义命令标题" "%~dp0\xxx.exe" "参数1" "参数1" "参数n" >%~dp0\xxx.log

setlocal 是什么

setlocal命令用于开始批处理文件的局部化操作。它允许您在该命令之后的批处理脚本中设置环境变量,而不会影响调用该批处理脚本的外部环境。当批处理脚本执行到endlocal命令时,任何在该脚本中设置的环境变量都会被还原,从而保持原始环境不变。