一,隐藏命令窗口

当我们运行bat脚本的时候,弹出CMD窗口。如果要隐藏窗口可以在bat脚本开头处写一下代码:

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM

二,以管理员身份运行

如何始终以管理员身份运行bat文件?
其实很简单,只需要新建一个bat文件,填入以下代码后运行即可:

@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" ) ::下面写你的脚本

三,下载功能

调用Download Wscript.Arguments的vbs脚本来实现下载

@echo off & title Bat+Vbs 下载器 By 熊仔其人

::设置要下载的文件链接,仅支持http协议。必写项。
set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::设置文件保存目录,若下载至当前目录,请留空
set Save=D:\document
if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已创建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa"
if not defined Save set "Save=%cd%"
(echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^)
echo Sub Download^(url,target^)
echo Const adTypeBinary = 1
echo Const adSaveCreateOverWrite = 2
echo Dim http,ado
echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^)
echo http.open "GET",url,False
echo http.send
echo Set ado = createobject^("Adodb.Stream"^)
echo ado.Type = adTypeBinary
echo ado.Open
echo ado.Write http.responseBody
echo ado.SaveToFile target
echo ado.Close
echo End Sub)>DownloadFile.vbs DownloadFile.vbs "%Url%" "%Save%\%FileName%"
::下载完删除生成的vbs文件
del DownloadFile.vbs

四,静默安装

静默安装软件

1.installshield型:

installshield是一款商业级别的安装程序封装工具,许多大型商业软件都用它进行封装.例如:macromedia flash. pgtoshop等
安装参数:-R 用于记录安装过程
-s 用于进行软件的自动安装
-f1 指定setup.iss应答文件的路径
使用方法:

1).先用在命令行下用-R参数进行软件的安装,其安装过程与正常安装没有本质的区别,但在软件安装结束后可以在 c:\windows(winxp系统)或c:\winnt(win2k系统)目录下找到一个名为setup.iss的文件,它就是我们后面要用到的可以进行自动安装的重要应答文件.

2).将以上的setup.iss文件与你的安装程序放在同一目录下,利用-s参数进行全自动安装.

例如: start /wait x:\phtoshop\setup.exe -s -f1 "y:\setup.iss"(如果setup.iss文件与安装程序在同一目录,可以省去-f1参数)

2.Inno setup 类型:

Inno setup 是一款完全免费的安装程序封装工具,其功能和稳定性均可与商业封装工具媲美.

安装参数: /silent(/verysilent) 用于软件的自动安装
sp- 用于跳过安装程序的确认界面
使用方法: start /wait x:\thunder5.exe /verysilent sp-
说明:此安装参数的使用比较容易,但如果我们把它写入到批处理文件中进行大量的软件安装时,有的软件会在安装完成后自行启动,比如迅雷,为不影响系统性能,我们可以结合其他的命令终止其进程,例如:
复制代码 代码如下:
@echo off
start /wait x:\thunder5.exe /verysilent sp-
echo.
taskkill.exe /F /IM Thunder5.exe

3.Microsoft Windows Installer技术打包程序

微软自家产品,许多软件生产厂家现在都选择这种基于微软开发的封装方式
参数:/ /QB(/QN)用于自动安装软件
/REBOOT=suppress 安装后不重起
使用方法: start /wait x:\setup.exe /QB REBOOT=Suppress

4.Nullsoft SuperRMP Install System (NSIS)类型,例如:winamp
使用参数: /S 用于自动安装软件
例如: x:\winamp\setup.exe /S
说明:此类软件安装后会给出一个文件关联确认窗口,目前无法跳过,但我可以给大家一个思路,就是结合VBS脚本中的Doskey命令来模仿键盘动作实现确认过程,到现在为止我个人还没有写出来,望高手帮忙完善

二.测试方法与安装类型分析:

1.测试方法:可以用目前比较流行的虚拟机进行测试
2.安装类型分析:大部分安装程序可以通过鼠标右击安装程序___选择属性 ________版本来查看其封装类

五,Windows启动目录

Windows启动目录

WinXP: C:/Documents and Settings/Administrator/「开始」菜单/程序/启动

Win7: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Win10: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

所有用户通用启动目录: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

总结上面的知识点,写成几个demo:

示例一:

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
@echo off & WPS下载器 ::设置要下载的文件链接,仅支持http协议。必写项。
set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::设置文件保存目录,若下载至当前目录,请留空
set Save=D:\document
if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已创建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa"
if not defined Save set "Save=%cd%"
(echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^)
echo Sub Download^(url,target^)
echo Const adTypeBinary = 1
echo Const adSaveCreateOverWrite = 2
echo Dim http,ado
echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^)
echo http.open "GET",url,False
echo http.send
echo Set ado = createobject^("Adodb.Stream"^)
echo ado.Type = adTypeBinary
echo ado.Open
echo ado.Write http.responseBody
echo ado.SaveToFile target
echo ado.Close
echo End Sub)>DownloadFile.vbs DownloadFile.vbs "%Url%" "%Save%\%FileName%"
del DownloadFile.vbs if exist "%Save%\%FileName%" (echo 位置:"%Save%\%FileName%" & start /wait "" "%Save%\%FileName%" /QB REBOOT=Suppress & pause >nul ) else (echo "%Save%\%FileName%"文件不存在)

新建记事本,复制代码粘贴到记事本,保存为“静默下载并安装.bat”

示例二:

:: 熊仔其人,始终以管理员身份运行
@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" ) @echo off & WPS下载器 ::设置要下载的文件链接,仅支持http协议。必写项。
set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::设置文件保存目录,若下载至当前目录,请留空
set Save=C:\
if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已创建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa"
if not defined Save set "Save=%cd%"
(if exist "%Save%\%FileName%" (goto beginInstall)
echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^)
echo Sub Download^(url,target^)
echo Const adTypeBinary = 1
echo Const adSaveCreateOverWrite = 2
echo Dim http,ado
echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^)
echo http.open "GET",url,False
echo http.send
echo Set ado = createobject^("Adodb.Stream"^)
echo ado.Type = adTypeBinary
echo ado.Open
echo ado.Write http.responseBody
echo ado.SaveToFile target
echo ado.Close
echo End Sub)>DownloadFile.vbs if exist "%Save%\%FileName%" (echo 位置:%Save%\%FileName% & goto beginInstall) else (echo 下载:%FileName% 请等待)
DownloadFile.vbs "%Url%" "%Save%\%FileName%"
::del DownloadFile.vbs :beginInstall
del DownloadFile.vbs
if exist "%Save%\%FileName%" (echo 安装:%Save%\%FileName% 请稍等,可能需要您手动确认安装 & start /wait "" "%Save%\%FileName%" /verysilent sp- & exit ) else (echo 异常:%Save%\%FileName% 文件不存在或被损坏!)

与上一个脚本不同的是,如果这一个脚本会覆盖旧文件,即下载目录下存在已下载过的同名文件会覆盖,因此该脚本可以重复执行。执行成功后自动退出。

示例三:

:: 熊仔其人,始终以管理员身份运行
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM @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" ) @echo off & WPS下载器 ::设置要下载的文件链接,仅支持http协议。必写项。
set Url=https://wdl1.cache.wps.cn/wps/download/W.P.S.8919.12012.2019.exe ::设置文件保存目录,若下载至当前目录,请留空
set Save=C:\
if exist %Save% (echo 位置:%Save%) else (mkdir %Save% & echo 已创建:%Save%) for %%a in ("%Url%") do set "FileName=%%~nxa"
if not defined Save set "Save=%cd%"
(if exist "%Save%\%FileName%" (goto beginInstall)
echo Download Wscript.Arguments^(0^),Wscript.Arguments^(1^)
echo Sub Download^(url,target^)
echo Const adTypeBinary = 1
echo Const adSaveCreateOverWrite = 2
echo Dim http,ado
echo Set http = CreateObject^("Msxml2.ServerXMLHTTP"^)
echo http.open "GET",url,False
echo http.send
echo Set ado = createobject^("Adodb.Stream"^)
echo ado.Type = adTypeBinary
echo ado.Open
echo ado.Write http.responseBody
echo ado.SaveToFile target
echo ado.Close
echo End Sub)>DownloadFile.vbs if exist "%Save%\%FileName%" (echo 位置:%Save%\%FileName% & goto beginInstall) else (echo 下载:%FileName% 请等待)
DownloadFile.vbs "%Url%" "%Save%\%FileName%"
::del DownloadFile.vbs :beginInstall
del DownloadFile.vbs
if exist "%Save%\%FileName%" (echo 安装:%Save%\%FileName% 请稍等,可能需要您手动确认安装 & start /wait "" "%Save%\%FileName%" /verysilent sp- & exit ) else (echo 异常:%Save%\%FileName% 文件不存在或被损坏!)

在前面两个案例的基础上,增加了隐藏命令窗口的功能,即执行脚本的过程对于用户来说不可见。不过双击执行的时候窗口还是会闪一下。

Window平台下的静默下载并安装软件脚本bat的更多相关文章

  1. 在Window平台下安装xgboost的Python版本

    原文:http://blog.csdn.net/pengyulong/article/details/50515916 原文修改了两个地方才安装成功,第3步可以不用,第2步重新生成所有的就行了. 第4 ...

  2. CentOS 下 Java 的下载、安装、配置

    CentOS 下 Java 的下载.安装.配置 系统: CentOS 7 x86_64 Java 版本: 1.8.0_171 本文将 Java 目录放在 /usr/local/java 文件夹下,读者 ...

  3. Linux下非root用户如何安装软件

    Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...

  4. Linux 系统下用源码包安装软件

    Linux系统下用源码包安装软件 by:授客 QQ:1033553122 下载源码安装包,解压或者直接双击打开(如果有安装zip或rar等压缩/解压缩软件的话),查找相关的安装说明文件,一般是READ ...

  5. [转载]Linux下非root用户如何安装软件

    [转载]Linux下非root用户如何安装软件 来源:https://tlanyan.me/work-with-linux-without-root-permission/ 这是本人遇到的实际问题,之 ...

  6. php下载并安装pear脚本

    下载并安装pear脚本cd /usr/local/php/bin/curl -o go-pear.php http://pear.php.net/go-pear.phar ./php go-pear. ...

  7. windows平台下基于VisualStudio的Clang安装和配置

    LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...

  8. CentOS6.5下如何正确下载、安装Intellij IDEA、Scala、Scala-intellij-bin插件、Scala IDE for Eclipse助推大数据开发(图文详解)

    不多说,直接上干货! 第一步:卸载CentOS中自带openjdk Centos 6.5下的OPENJDK卸载和SUN的JDK安装.环境变量配置   第二步:安装Intellij IDEA 若是3节点 ...

  9. windows下的pycharm下载与安装(不包括激活)

    Pycharm的下载与安装 首先兄弟们我们依旧在浏览器输入pycharm的网址链接 PyCharm: the Python IDE for Professional Developers by Jet ...

随机推荐

  1. 渗透测试学习 十、 MSsql注入下

    大纲:MySQL介绍及操作 MySQL注入原理 MySQL注入其他操作 一.MySQL介绍及操作 介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle ...

  2. Dockerfile语法简介

    Dockerfile是由一系列命令和参数构成的脚本,一个Dockerfile里面包含了构建整个image的完整命令.Docker通过docker build执行Dockerfile中的一系列命令自动构 ...

  3. appium---adb logcat 命令详解

    我们在做app测试的过程中,肯定会遇到需要抓取日志问题,这几天安静也遇到了此问题,后台日志生成的太多了,保存本地了吧,设备多没有这么USB,通过wifi连接又太麻烦,你说这怎么是好?不要着急,我们往下 ...

  4. react中antd的表格自定义展开

    antd的表格官方案例中给出的都是固定的图表展开,在做需求的时候,需要使用点击最后一列,然后出现展开内容,实现效果图如下 在最开始设置一个全局变量 const keys = [];在设置列参数的函数中 ...

  5. 详解C++ STL set 容器

    详解C++ STL set 容器 本篇随笔简单介绍一下\(C++STL\)中\(set\)容器的使用方法及常见使用技巧. set容器的概念和性质 \(set\)在英文中的意义是:集合.\(set\)容 ...

  6. linux 安装盘作为 repo

    1) CentOS 7.7 安装完之后, /etc/yum.repos.d 下面有很多.repo. 其中有一个CentOS-Media.repo. 编辑文件把enabled 改成 1 . 然后把其他. ...

  7. mybatis批处理数据

    批处理数据主要有三种方式: 1.传统jdbc处理    2.mybatis批处理插入    3.使用executortype处理 jdbc 处理 1.通过 for循环插入 main方法如下所示: Co ...

  8. 原生javascript 共享onload事件

    在工作时,我们给一个元素绑定了事件,如果dom还没加载完成,就执行了js代码,就不会绑定成功.常规解决方案就是用: window.onload = EventFunction; 可是如果有两个 事件, ...

  9. poj-1104 Robbery

    Robbery Time Limit: 1000MS   Memory Limit: 32768K Total Submissions: 1249   Accepted: 504 Descriptio ...

  10. 【04】Nginx:rewrite / if / return / set 和变量

    写在前面的话 我们前面已经谈了编译安装,基本语法,日志处理,location 匹配,root / alias 的不同效果.这里我们主要谈谈 rewrite(重写)功能,顺便说说 nginx 中自带的变 ...