通过vbs语法不弹窗执行脚本

vbs简介

VBS是基于Visual Basic的脚本语言,简称VB。VBS的全称是:Microsoft Visual Basic Script Edition。

vbs语法

REM 注释 

REM 参数
args1=WScript.Arguments.Item(0)
args2=WScript.Arguments.Item(1)

执行vbs文件

写好vbs脚本后,可以新建一个.vbs后缀名文件存放,然后通过工具执行脚本。

执行vbs文件的工具有两个:

cscript "D:\test.vbs"
C:\Windows\System32\cscript.exe "D:\test.vbs"

OR

wscript "D:\test.vbs"
C:\Windows\System32\wscript.exe "D:\test.vbs"

建议使用wscript,执行脚本无弹窗,cscript有弹窗

执行脚本

REM 后台执行脚本
WScript.CreateObject("WScript.Shell").Run "cmd /c echo 1", 0, True

REM 后台CMD执行脚本
WScript.CreateObject("WScript.Shell").Run "cmd /c D:\test.bat ", 0, True

REM 后台Powershell执行脚本
REM 默认不允许执行ps1脚本,需要在powershell中执行 set-ExecutionPolicy RemoteSigned 脚本开启
WScript.CreateObject("WScript.Shell").Run "powershell -ExecutionPolicy Bypass  -noexit -File  D:\testps.ps1 ", 0, True

REM 后台执行脚本+参数
WScript.CreateObject("WScript.Shell").Run "cmd /c D:\test.bat " & WScript.Arguments.Item(0) , 0, True

var args1=WScript.Arguments.Item(0)
var args2=WScript.Arguments.Item(1)
WScript.CreateObject("WScript.Shell").Run args1 & args2 , 0, True

REM 查看参数值
msgbox args1    

配合注册表使用

通过注册表为文件(夹)添加右键菜单,可以查看此文档

执行脚本绝对路径执行

command中默认值为wscript "D:\test.vbs"

REM test.vbs

REM CMD
WScript.CreateObject("WScript.Shell").Run "cmd /c D:\test.bat ", 0, True

REM Powershell
WScript.CreateObject("WScript.Shell").Run "powershell -ExecutionPolicy Bypass  -noexit -File  D:\testps.ps1 ", 0, True

执行脚本携带参数

command中默认值为wscript "D:\test.vbs" "%1"%1代表当前文件(夹)路径

REM test.vbs

REM CMD,chr(34) 代表引号,处理路径中存在空格问题
WScript.CreateObject("WScript.Shell").Run "cmd /c D:\test.bat "  & chr(34) & WScript.Arguments.Item(0) & chr(34) , 0, True

REM Powershell
WScript.CreateObject("WScript.Shell").Run "powershell -ExecutionPolicy Bypass  -noexit -File  D:\testps.ps1 " & chr(34) & WScript.Arguments.Item(0)  & chr(34), 0, True

test.bat

::使用%1取第一个值,%*代表取所有参数的值,
echo %1
echo %*

:: 去除参数引号
set widget="a very useful item"
set widget
set widget=%widget:"=%
set widget

testps.ps1

# 获取第一个参数
echo $args[0]

通用脚本

cmd

command中默认值为wscript "D:\test.vbs" "D:\test.bat " "%1"

powershell

command中默认值为wscript "D:\test.vbs" "D:\testps.ps1 " "%1"

REM 脚本位置
arg1=WScript.Arguments.Item(0)

REM 参数(文件路径)
arg2=WScript.Arguments.Item(1)

If InStr(arg1, "ps1") Then
ageexec="powershell -ExecutionPolicy Bypass  -noexit -File "
Else
ageexec="cmd /c "
End If

REM  chr(34) 代表引号,处理路径中存在空格问题
shell=ageexec & arg1 & chr(34) & arg2 & chr(34)

WScript.CreateObject("WScript.Shell").Run shell, 0, True

test.battestps.ps1 同上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章