WindowsのBATスクリプトレコード

I.概要

この記事では、主にBATスクリプトの問題と日常業務で使用される使用項目を記録します。これには、後で参照できるようにネットワークで収集および整理された関連する入門的な基本資料が含まれます。

2.文法

3.スクリプト

3.1。管理者権限でBATスクリプトを実行する実装方法

1)例1:

@ 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

説明:mshta.exeは、CMDがバッチファイルのインタープリターであるのと同様に、hta(HTMLアプリケーションホスト:htmlとして理解できるHTMLアプリケーションホスト)ファイルインタープリターです。vbscriptテーブルで使用されるプロトコルはjavascriptにすることもできます。これにより、mshtaプログラムはvbs/jsステートメントをhtmlファイルに配置せずにvbs/jsステートメントを直接実行できます。また、htaはローカル操作用に設計されており、より高いレベルで開くことができます。パーミッションhtmlファイル。
2)例2:実行する必要のあるコマンドの前に書き込むだけ

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

3)例3:

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

4)例4:バットが起動したら、最初にvbsスクリプトを呼び出し、vbsスクリプトを使用して、管理者としてバットのrunas部分を呼び出します。

@ECHO OFF
setlocal EnableDelayedExpansion
color 3e
title 添加服务配置
    
PUSHD %~DP0 & cd /d "%~dp0"  ::更改当前目录为批处理脚本当前所在的目录,%0代表批处理本身,~dp是变量扩充,d(Drive的缩写)既是扩充到分区号 d: p(Path)就是扩充到脚本所在路径;
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
    
::填写自己的脚本
    
echo 执行完毕,任意键退出
    
pause >nul
exit

説明:関連する意味

〜0-引用符( ")を削除し、%0を展開します。%0は現在のスクリプトを表し、〜はさまざまな展開を表します。
%〜f0-%0を完全修飾パス名に展開します(" f"はファイルです。ファイル)
%~ d0-%0をドライブ
文字にのみ展開します%~ p0-%0をパスにのみ展開します
%~ n0-%0をファイル名にのみ展開します( "n"はファイル名の名前です)
%~x0- %0をファイル拡張子のみに展開します
%~ s0-パスの短い名前、つまり、展開されたパスには短い名前のみが含まれます( "s"は短い、短い)
%~ a0-%0をファイルのファイル属性に展開します( "a "は属性です)
%~ t0-%0をファイルの日付/時刻に拡張します(" t "時間)
%~ z0-%0をファイルのサイズに拡張します(サイズサイズ)
%~ $ PATH:0looks PATH環境変数にリストされているディレクトリの場合、%0を最初に見つかった完全修飾名に展開します。環境変数名が定義されていないか、ファイルが見つからない場合、このキーの組み合わせは空の文字列
%〜dp0に展開されます-展開のみ%0をドライブ文字とパスに
%〜nx0-%0をファイル名と拡張子にのみ展開%~ fs0-%
0を短い名前の完全な名前にのみ展開パス名
%~ dp $ PATH:0'-リストされているディレクトリを探しますパス環境変数で、%Iを最初のドライブ文字と見つかったパスに展開します。
%~ ftza0-%0を出力行のようにDIRに展開します。
%0は現在のバッチファイルです。0が1に置き換えられた場合、これは最初のファイル、2は2番目のファイルです...;%1はスクリプトに渡される最初のパラメーターを表し、%〜1も最初のパラメーターを表します。ただし、パラメータに引用符が含まれている場合は、引用符を削除してください。
現在のドライブ文字:%~ d0
現在のパス:%cd%
現在の実行コマンドライン:%0
現在のbatファイルパス:%~ dp0
現在のbatファイルの短いパス:%~ sdp0
set pa =%cd%現在のパスをpaに割り当て、等号の前後にスペースを入れないでください//Windowsショートカットは相対パスを使用できません。バッチファイルを使用して、相対パスを取得できます
。echo%pa%show the pa variable // verify
5)例5:

@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)例6:BATおよびCMDバッチを管理者として実行させる

@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)例7:CMDバッチは管理者として自動的に実行されます

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

説明:プログラミングインで再現

おすすめ

転載: blog.csdn.net/ximenjianxue/article/details/123320132