批处理应用的几个技巧

1、批处理最小化运行的几种方法:

1) 最小化运行批处理方法一:通常javascript

mode con cols=20 lines=1html

if exist "Temp.bat" goto Startjava

>Temp.bat echo start /min "" "%~nx0"^&exitshell

start /min Temp.bat&exitdom

:Startide

del "Temp.bat">nul工具

pause命令行

exitssr

注释:htm

假设上面内容被保存在“min.bat”文件中

(1)mode con cols=14 lines=1(这一行能够不要)

设置cmd屏幕缓冲区宽度为14字符,行数为1行

(2)>Temp.bat echo start /min "" "%~nx0"^&exit

在当前目录生成Temp.bat文件,文件内容为“start /min "" "min.bat"&exit”。“^”为转义符,确保可正常把符号“&”写入到文本文件。“%~nx0”在运行时会由其所在的批处理文件的文件名替换(本例中被替换为“min.bat”)。

(3)start /min Temp.bat & exit (由这里开始接下来的命令都在最小化的CMD中执行)

在新的最小化CMD窗口中运行“Temp.bat”并退出一开始运行min.bat的CMD窗口。

(4)Temp.bat最小化调用min.bat

此时Temp.bat已经存在,执行“:Start”行以后的内容。

2) 最小化运行批处理方法二:好

只一行代码,让批处理最小化运行本身

if not "%~1"=="p" start /min cmd.exe /c %0 p&exit

加在任意批处理开头,不过这种代码很危险,我就忘在%0后加个p,结果。。。!

解释一下这段代码的意思:

1.if not "%~1"=="p"——若是此批处理的第一个参数“%~1”不为“p”,则...

2.start /min cmd.exe /c——最小化执行cmd.exe后关闭(为何要用cmd.exe来间接执行%0?目的是执行不以exit结束的批也能自动退出)

3.%0 p——批处理自己,带参数“p”(任意参数便可)

4.&exit——不用解释了吧!

做用是:最小化运行自身(一次!),本批处理退出,而且不会无限运行!

3)最小化运行批处理方法三:(好)

@echo off&&mode con cols=20 lines=1 (这句最好不要)

%1 %2

start /min /i "" "%~nx0" goto min&&goto :eof

:min

Rem 下面写代码

 

批处理隐藏窗口运行的几种方法:

若是要隐藏执行批处理的话,批处理程序中不能包含set /p、pause等交互命令,不然批处理没法执行完整!

1) 隐藏窗口运行批处理方法一:最好,支持内存系统

@echo off

if "%1" neq "1" (

>"%temp%\tmp.vbs" echo set WshShell = WScript.CreateObject^(^"WScript.Shell^"^)

>>"%temp%\tmp.vbs" echo WshShell.Run chr^(34^) ^& %0 ^& chr^(34^) ^& ^" 1^",0

start /d "%temp%" tmp.vbs

exit

)

::从这里开始,就是你的批处理代码了,DOS黑框一闪而过,转到后台运行了

pause

::你会在任务管理器看到有一个隐藏窗口的CMD进程

2) 隐藏窗口运行批处理方法二:通常

运行bat时隐藏cmd窗口的方法 能够编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序。

Set ws = CreateObject("Wscript.Shell")

ws.run "cmd /c 批处理程序名",vbhide 

将上面代码拷贝到记事本中,保存为"runbat.vbs"或者其它的名字(扩展名必须是.vbs),而后点击运行生成的脚本runbat.vbs,便可隐藏运行指定的批处理程序。

这个vbs脚本也能够在bat环境中直接调用,达到隐藏bat自身的目的。

3) 隐藏窗口运行批处理方法三:通常

Set ws = CreateObject("Wscript.Shell")

wscript.sleep 1200 ws.run "cmd /c start winrar.exe",vbhide

wscript.sleep 2200 ws.run "cmd /c start msimn.exe",vbhide

wscript.sleep 1200 ws.run "cmd /c start iexplore.exe",vbhide

4) 隐藏窗口运行批处理方法四:

缺点:会看到一个窗口一闪而逝。优势:简单,直接添加便可。

@echo off

if "%1"=="h" goto begin

start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit

:begin

::如下为正常批处理命令,不可含有pause set/p等交互命令

pause

5) 隐藏窗口运行批处理方法五:

缺点:调用麻烦点。优势:基本看不到痕迹(非绝对的,指通常用户)

HideRun.vbs

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

其中D:/test.bat是你的批处理路径

另外一思路为把bat转换成vbs,而后vbs生成一个临时bat文件,而后WScript.Shell.Run隐藏启动这个临时bat。

HideRun.bat

echo CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0>$tmp.vbs

cscript.exe /e:vbscript $tmp.vbs

del $tmp.vbs

这个批处理其实不能使其批处理自己隐藏,可是下面大部分隐藏调用批处理的原理和基础。

HideRun.js

new ActiveXObject('WScript.Shell').Run('cmd /c D:/Test.bat',0);

用Javascript有什么好处呢?js的字符串变量能够用单引号,从而方便命令行做为参数调用,并且js很好的支持多行语句用 ; 分隔写成一行。要注意的是:js要区分大小写,方法

必须用括号,结尾必须有分号。因此就成了下面的命令:

mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c D:/test.bat',0);window.close()"

一般系统管理员会向用户端推送一些脚本并运行,或者拷贝批处理文件到客户端由用户本身运行。可是大部分脚本在运行时会弹出黑色背景的DOS窗口,这会让很多用户不知所措,甚至误操做关闭正在运行的窗口。好在批处理文件的DOS窗口是能够隐藏的。

6)隐藏窗口运行批处理方法六:

用快捷方式,若是要使一个批处理自己隐藏,能够建立一个bat的快捷方式而后修改快捷方式中的相关路径便可隐藏启动你的批处理。能够用vbs来创建一个 .lnk,其实用批处理也行(先echo一个

vbs出来)

7) 隐藏窗口运行批处理方法七:

利用系统服务,能够创建一个系统服务而后启动这个服务来启动批处理。缺点是启动服务较慢,须要管理员权限

runassrv add /cmdline:"C:/Windows/System32/cmd.exe /c D:/test.bat" /name:"mysrv"

net start mysrv

隐藏窗口运行批处理方法八:

利用at计划任务,用at能够创建一个计划任务,在不输入 /interactive 参数能够后台运行。可是建使用at必须有管理员权限

at 09:10 "cmd /c D:/Test.bat"

而后在 9:10 系统就会自动后台以SYSTEM权限运行这个bat

9) 隐藏窗口运行批处理方法九:

利用ftype文件关联

ftype batfile=C:/Windows/System32/mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c%1',0);window.close();"

10) 隐藏窗口运行批处理方法十:

编译成可执行文件,很多方法能够实现,能够直接利用的工具备bat2exe,百度搜索一大把。

 

2、批处理窗口自定义:

窗口大小定义:

语法格式:

MODE con: COLS=[窗口宽度] LINES=[窗口高度]

窗口宽度取值:≥20,高度取值:1≤h≤300

示例:

MODE con: COLS=35 LINES=17

3、批处理窗口前景色和背景色随机变换:

代码:

@echo off&setlocal enabledelayedexpansion

set "b=0123456789abcdef"&set "f=0123456789abcdef"&set /a r=%random%%%16&set /a s=%random%%%16

color !f:~%s%,1!!b:~%r%,1!

::下面写代码

          教程完毕,讲到这儿,想必你们对批处理也都已经很是地熟悉了,批处理更多强大的你也可以挖掘出来了,整装待发,尽情的遨游在批处理的海洋里吧!

 

出处:http://www.javashuo.com/article/p-vuxdpbqg-z.html

相关文章
相关标签/搜索