美文网首页
玩转批处理(二)|改变字体编码、管理员身份获取

玩转批处理(二)|改变字体编码、管理员身份获取

作者: Ricsy | 来源:发表于2019-01-11 14:33 被阅读10次


    1. 回显相关命令
    命令 作用
    @echo on 打开回显
    @echo off 关闭回显

    提示:
    当不想批处理文件中的命令一行一行在DOS中显示出来时可以使用@echo off,将其放于程序的最上方就行了

    2.字体编码

    chcp <number>

    提示:

    • UTF-8 65001
    • GB2312 936

    参阅:代码页标识符

    4. 命令行结果不显示

    若要命令行结果不显示,则输出重定向到null
    <command> >nul
    例如:chcp 65001 >nul

    5.自动以管理员身份运行bat
    
    ::::::::::::::::::::::::::::::::::::::::::::
    :: Elevate.cmd - Version 4
    :: Automatically check & get admin rights
    ::::::::::::::::::::::::::::::::::::::::::::
     @echo off
     CLS
     ECHO.
     ECHO =============================
     ECHO  Running CMD As Admin
     ECHO =============================
    
    :init
     setlocal DisableDelayedExpansion
     set cmdInvoke=1
     set winSysFolder=System32
     set "batchPath=%~0"
     for %%k in (%0) do set batchName=%%~nk
     set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
     setlocal EnableDelayedExpansion
    
    :checkPrivileges
      NET FILE 1>NUL 2>NUL
      if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
    
    :getPrivileges
      if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
      ECHO.
      ECHO **************************************
      ECHO Invoking UAC for Privilege Escalation
      ECHO **************************************
    
      ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
      ECHO args = "ELEV " >> "%vbsGetPrivileges%"
      ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
      ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
      ECHO Next >> "%vbsGetPrivileges%"
    
      if '%cmdInvoke%'=='1' goto InvokeCmd 
    
      ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
      goto ExecElevation
    
    :InvokeCmd
      ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
      ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"
    
    :ExecElevation
     "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
     exit /B
    
    :gotPrivileges
     setlocal & cd /d %~dp0
     if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)
    
     ::::::::::::::::::::::::::::
     ::START
     ::::::::::::::::::::::::::::
    
    

    提醒:将自己代码放在最后面即可以管理员身份运行批处理命令

    参阅:windows 批处理脚本自动以管理员权限运行

    相关文章

      网友评论

          本文标题:玩转批处理(二)|改变字体编码、管理员身份获取

          本文链接:https://www.haomeiwen.com/subject/nyqxdqtx.html