批处理 和VB脚本 VBS vb过程写入vbs脚本

批处理隐藏运行的10种思路

1.基础

HideRun.vbs

--------------------------------------------------------------------------------

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

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

HideRun.bat

--------------------------------------------------------------------------------

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

cscript.exe /e:vbscript. $tmp.vbs

del $tmp.vbs

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

HideRun.js

--------------------------------------------------------------------------------

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

用Javascript有什么好处呢?js的字符串变量可以用单引号,从而方便命令行作为参数调用,而且js很好的支持多行语句用 ; 分隔写成一行。要注意的是:js要区分大小写,方法必须用括号,结尾必须有分号。所以就成了下面的命令:

--------------------------------------------------------------------------------

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

2.用快捷方式

如果要使一个批处理本身隐藏,可以参考附件里的一个快捷方式,修改附件中的相关路径即可隐藏启动你的批处理。可以用vbs来建立一个 .lnk,其实用批处理也行(先echo一个vbs出来)

3.利用系统服务

可以用sc建立一个系统服务然后启动这个服务来启动批处理。缺点是启动服务较慢,需要管理员权限

查考这个帖子,

http://www.cn-dos.net/forum/view ... =%E6%9C%8D%E5%8A%A1

asbai 兄的大作,极大的方便了我们的使用。

CODE: [Copy to clipboard]

--------------------------------------------------------------------------------

runassrv add /cmdline:"C:WindowsSystem32cmd.exe /cD:test.bat" /name:"mysrv"

net start mysrv

4.利用at计划任务

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

CODE: [Copy to clipboard]

--------------------------------------------------------------------------------

at 09:10 "cmd /cD:Test.bat"

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

5.利用ftype文件关联

综合上面的技术,使所有批处理都隐藏运行

CODE: [Copy to clipboard]

--------------------------------------------------------------------------------

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

大家可以讨论下下面的思路,目前没有明确的方法,但是理论上是可行的

6.rundll32

其实这个方法只是理论上估计的,这里提出来占个位置,留个记号,等待高手研究

rundll32可以调用 dll 里的API,如果有个dll可以隐藏run一个exe就可以实现隐藏启动批处理,呵呵。目前我也没找到方法。

7.其他用户

Windows 2k/XP支持多用户,如果能在后台登陆另一个账户的桌面然后运行一个批处理,就能完全达到隐藏的目的

8.bat2vbs

这个方法只是一个不是很成熟的思路。

查考这个帖子:

http://www.cn-dos.net/forum/view ... p;highlight=exe2bat

这使我们产生了一个想法:把bat转换成vbs,然后vbs生成一个临时bat文件,然后WScript.Shell.Run隐藏启动这个临时bat

9. .NET编译

参考这个帖子:

http://www.cn-dos.net/forum/view ... hlight=script%2Bnet

里面提到了一个 .NET Warpper,我们完全可以利用系统自带的组件把bat编译到 exe 当中。如果bat不涉及交互,exe自然就安静的运行了。

10.注入汇编

最后向大家推出的今天最隆重的,ASCII Assembly Code专家 Herbert Kleebauer 的又一力作:showwin.exe

Quote:

showwin.exe let you minimize/maximize/hide the command window

within a batch program (requires W2k or better).

Usage: showwin.exe number

0 SW_HIDE

Hides the window and activates another window.

1 SW_SHOWNORMAL

Activates and displays a window. If the window is minimized or maximized,

the system restores it to its original size and position. An application

should specify this flag when displaying the window for the first time.

2 SW_SHOWMINIMIZED

Activates the window and displays it as a minimized window.

3 SW_MAXIMIZE

Maximizes the specified window.

3 SW_SHOWMAXIMIZED

Activates the window and displays it as a maximized window.

4 SW_SHOWNOACTIVATE

Displays a window in its most recent size and position. This value is

similar to SW_SHOWNORMAL, except the window is not actived.

5 SW_SHOW

Activates the window and displays it in its current size and position.

6 SW_MINIMIZE

Minimizes the specified window and activates the next top-level window

in the Z order.

7 SW_SHOWMINNOACTIVE

Displays the window as a minimized window. This value is similar to

SW_SHOWMINIMIZED, except the window is not activated.

8 SW_SHOWNA

Displays the window in its current size and position. This value is

similar to SW_SHOW, except the window is not activated.

9 SW_RESTORE

Activates and displays the window. If the window is minimized or maximized,

the system restores it to its original size and position. An application

should specify this flag when restoring a minimized window.

10 SW_SHOWDEFAULT

Sets the show state based on the SW_ value specified in the STARTUPINFO

structure passed to the CreateProcess function by the program that

started the application.

11 SW_FORCEMINIMIZE

Windows 2000/XP: Minimizes a window, even if the thread that owns the

window is not responding. This flag should only be used when minimizing

windows from a different thread.

---------------------------------------------------------------------------

A simple example:

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:

@echo off

echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>showwin.com

echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>showwin.com

echo T}{zE~@gwkBG@OEKcUt`E}@mqqBsy?seHBEaPhxr?@zAB`LrPEyoDt@Cj?>>showwin.com

echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>showwin.com

echo FEvAUSQ?_YLTQ@@?~QCo_F~RDU@?aU?@MQ_AMy1GHs?Gw`LbLK@shM`S_d>>showwin.com

echo bD_nsDddlTr_sPdlnTcnaTv_xP_ngD_rhDhsrT_kkDhrtT_fmDRNCTILk?>>showwin.com

echo staThg_So_rPfnqTl`qTdq_ShtpTrdqThV_Sqrm@ILm?O?cOKFDP?@@?dx>>showwin.com

echo OdFUu?N?_B@J@??KD?HUA?QOGB_QO?F?SCAQO?UDF?UCE?Q_F?DUA?CUB?>>showwin.com

echo OFO?FOS?DUO?IUO?FOW?RU{OWFO?mYU?wdsTeQs@OQ@?QAQ?LUA?_F_og~>>showwin.com

echo UODUO?FOSAFOeAUOyAO_DCSHUOOQO?OCFGuHUOGFO?TUO?DRTTqrQ@kcmS>>showwin.com

echo gFkPFUO?ngRThVvTncmTJFvPMQDTrKDDcmqOFkkDFOSAFOeAUOyAdFFSnB>>showwin.com

echo sT`llTKcmTdmhTFQ@PBsdTrmnTdknTmhVTvncTwDSSOshTbnqTrrdTT~?K>>showwin.com

echo ?OGOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it=upkNQD??OuQsQG[i?>>showwin.com

echo RwrqosHy?Mjmv@IuBlpUrHdjNAslF~mH}OKT?U??PT~OL?O?O?i?COT~B>>showwin.com

echo U?OCU?YF0x>>showwin.com

showwin.com>showwin.exe

del showwin.com

dir

:: wait 4 seconds

ping -n 4 localhost >nul

:: hide window

showwin.exe 0

dir /b

:: wait 4 seconds

ping -n 4 localhost >nul

:: show window

showwin.exe 5

:: wait 4 seconds

ping -n 4 localhost >nul

批处理 和VB脚本 VBS vb过程写入vbs脚本
del showwin.exe

用批处理cmd或脚本vbs创建lnk快捷方式

2010-07-27 10:38

以创建“记事本”快捷方式为例子

方法一:使用cmd

echo [InternetShortcut] >>a.url

echo URL=c:windowssystem32notepad.exe >>a.url

echo IconIndex=0 >>a.url

echo IconFile=C:windowssystem32shell32.dll >>a.url

方法二:使用vbs(一)

Dim WSHShell, fs

Set WSHShell = WScript.CreateObject("WScript.Shell")

Set fs = WScript.CreateObject("Scripting.FileSystemObject")

Function MakeDesktopShortcut( name, target )

Dim Shortcut,DesktopPath,StartupPath

DesktopPath = WSHShell.SpecialFolders("Desktop")

Set Shortcut = WSHShell.CreateShortcut(DesktopPath & "" & name & ".lnk")

Shortcut.TargetPath = target

StartupPath = fs.GetParentFolderName( target )

If fs.FolderExists( StartupPath ) then

Shortcut.WorkingDirectory = StartupPath

End If

Shortcut.Save

End Function

MakeDesktopShortcut "Shortcut to Notepad", "C:WindowsNotepad.exe"

方法三:使用vbs(二)

set WshShell = WScript.CreateObject("WScript.Shell")

strDesktop = WshShell.SpecialFolders("Desktop") '获得桌面目录

set ShellLink = WshShell.CreateShortcut(strDesktop & "qq.lnk") '快捷方式存放目录及名称

oShellLink.TargetPath = "C:Program FilesTencentQQCoralQQ.exe" '指向的可执行文件

oShellLink.WindowStyle. = 1 '运行方式

oShellLink.Hotkey = "CTRL+SHIFT+F" '快捷键

oShellLink.IconLocation = "C:Program FilesTencentQQQQ.exe, 0" '图标

oShellLink.Description = "qq" '备注

oShellLink.WorkingDirectory = "C:Program FilesTencentQQ" '起始目录

oShellLink.Save '创建快捷方式

windows下通过批处理和vbs脚本自动telnet主机并执行命令

2009-12-24 06:43

'建立Shell对象

set sh=WScript.CreateObject("WScript.Shell")

WScript.Sleep 500

'向telnet发送命令

sh.SendKeys "open 202.1.123.32 23{ENTER}"

WScript.Sleep 500

sh.SendKeys "hehe{ENTER}"

WScript.Sleep 500

sh.SendKeys "xlm{ENTER}"

WScript.Sleep 500

sh.SendKeys "telnet 218.23.33.146{ENTER}"

WScript.Sleep 500

sh.SendKeys "test{ENTER}"

WScript.Sleep 500

sh.SendKeys "haha{ENTER}"

sh.SendKeys "ksh{ENTER}"

WScript.Sleep 500

sh.SendKeys "set -o vi{ENTER}"

WScript.Sleep 500

sh.SendKeys "stty erase ^H{ENTER}"

-----------------------------------------------------------------------

' 对于SendKeys这个命令可以send什么,可以看下面的列表:

' BACKSPACE {BACKSPACE}, {BS}, or {BKSP}

' BREAK {BREAK}

' CAPS LOCK {CAPSLOCK}

' DEL or DELETE {DELETE} or {DEL}

' DOWN ARROW {DOWN}

' END {END}

' ENTER {ENTER} or ~

' ESC {ESC}

' HELP {HELP}

' HOME {HOME}

' INS or INSERT {INSERT} or {INS}

' LEFT ARROW {LEFT}

' NUM LOCK {NUMLOCK}

' PAGE DOWN {PGDN}

' PAGE UP {PGUP}

' PRINT SCREEN {PRTSC}

' RIGHT ARROW {RIGHT}

' SCROLL LOCK {SCROLLLOCK}

' TAB {TAB}

' UP ARROW {UP}

' F1 {F1}

' F2 {F2}

' F3 {F3}

' F4 {F4}

' F5 {F5}

' F6 {F6}

' F7 {F7}

' F8 {F8}

' F9 {F9}

' F10 {F10}

' F11 {F11}

' F12 {F12}

' F13 {F13}

' F14 {F14}

' F15 {F15}

' F16 {F16}

' SHIFT +

' CTRL ^

' ALT %

再写auto.bat批处理脚本:

-----------------------------------------------------------------------

rem 启动telnet

start telnet.exe

rem batch telnet

cscript. /nologo auto.vbs

-----------------------------------------------------------------------

两文件放于同一目录下,直接点击auto.bat就可以自动telnet主机并执行一些unix命令了。

脚本实现telnet自动登陆

2011-07-31 13:03

转载自 分享

最终编辑 小~C

下面代码,只要执行一个就可以登陆到几台计算机运行监控命令。

在windows 中实现这样的功能需要利用win 自带的VBscript. 和批处理来实现。

首先建立telnet-172.16.3.2.vbs 的脚本文件

set sh=WScript.CreateObject("WScript.Shell")

WScript.Sleep 1000

sh.SendKeys "telnet.exe 172.16.3.2 ~ " 执行的命令字符 “~”代表回车

WScript.Sleep 1000 延迟1000

sh.SendKeys "username ~ "

WScript.Sleep 1000

sh.SendKeys "passwd ~ "

WScript.Sleep 1000

sh.SendKeys "sar 1 11111 ~ "

WScript.Sleep 1000

建立telnet-172.16.3.2.bat 的批处理文件

start cmd.exe 启动一个CMD 终端

rem batch telnet 172.16.3.2 显示信息

cscript. //nologo telnet-172.16.3.2.vbs 调用脚本文件

这样直接执行telnet-172.16.3.2.bat 就可以实现自动telnet 并运行sar 命令了。我们要实现的是对多台主机的登陆操作。可以按照上面的方法分别建立脚本文件和批处理文件,然后在建立一个telnet.bat 的批处理文件,内容为

call telnet-172.16.3.2.bat

call telnet-172.16.3.3.bat

call telnet-172.16.3.4.bat

call telnet-172.16.3.5.bat

call telnet-172.16.3.16.bat

call telnet-172.16.3.62.bat

call telnet-172.16.3.66.bat

call 命令的作用是在执行完一个批处理一会才转入到下一个批处理文件。

附录

一、关于cscript

键入: cscript. [ScriptName] [//B] [//D] [//E:Engine] [//H:CScript.//H:WScript] [//I] [//Job:Identifier] [//Logo | //NoLogo] [//S] [//T:Number] [//X] [//U] [//?] [ScriptArguments]

参数ScriptName

指定脚本文件的路径和文件名。

//B

指定批处理模式,它不显示警报、脚本错误或输入提示。

//D

启动调试程序。

//E:Engine

指定用于运行脚本的引擎。

//H:cscript.

将 Cscript.exe 注册为运行脚本的默认脚本宿主。

//H:wscript.

将 Wscript.exe 注册为运行脚本的默认脚本宿主。这是默认值。

//I

指定交互模式,它显示警报、脚本错误和输入提示。这是默认值,相反值是 //B。

//Job:Identifier

运行 .wsf 脚本文件中以 Identifier 标识的作业。

//Logo

指定 Windows 脚本宿主横幅在脚本运行之前显示在控制台中。这是默认值,相反值是 //Nologo。

//Nologo

S指定 Windows 脚本宿主横幅在脚本运行之前不显示。

//S

保存当前用户的当前命令提示符选项。

//T:Number

指定脚本可以运行的最大时间(以秒计)。您可以指定最大为 32,767 秒。默认为无时间限制。

//U

为从控制台重定向的输入和输出指定 Unicode 为其编码格式。

//X

启动调试程序中的脚本。

//?

显示可用的命令参数并提供有关使用它们的帮助。这与键入 Cscript.exe 不带参数和脚本含义相同。

ScriptArguments

指定传递给脚本的参数。每一个脚本参数前面都必须带有斜杠 (/)。

VBS脚本和BAT批处理自身删除的方法(自杀)

VBS脚本和BAT批处理自身删除的方法

删除自身之:VBS

把下面的脚本保存为selfkill.vbs或 selfkill.vbe:

CODE:Set fso = CreateObject("Scripting.FileSystemObject")

f = fso.DeleteFile(WScript.ScriptName)

WScript.Echo( WScript.ScriptName)

然后运行它,是不是发现selfkill.vbs神奇的消失啦?而 后面的对话框却被正常显示出来噢^*^

上面的脚本调用FSO控件,使用WSH中Wscript对象得 ScriptName属性,得到脚本自身的文件名,

并调用FSO的DeleteFile方法删除自身!

把它稍微改写一下:

CODE:On Error Resume Next '防止出现错误

Set fso = CreateObject("Scripting.FileSystemObject")

WScript.Sleep 1000 '将脚本执行挂起1秒

fso.DeleteFile(WScript.ScriptName) '删除脚本自身<!--more-->

If fso.FileExists("c:selfkill.exe") Then fso.DeleteFile("c:selfkill.exe") '删除程序

程序就可以动态生成VBS自删除脚本,并调用它删除自身啦,方法同 样和批处理文件的自删除相似!

需要说明的是由于病毒及蠕虫对脚本的滥用,脚本删除文件时可能会被 被误认为恶意代码!

附:自删除js脚本:

CODE:try{fso = new ActiveXObject("Scripting.FileSystemObject");

WScript.Sleep(1000);//休眠1秒

fso.DeleteFile(WScript.ScriptName);// 删除脚本自身

fso.DeleteFile("c:selfkill.exe");// 删除程序

}catch(e){}

附:自删除js脚本:

CODE:try{fso = new ActiveXObject("Scripting.FileSystemObject");

WScript.Sleep(1000);//休眠1秒

fso.DeleteFile(WScript.ScriptName);// 删除脚本自身

fso.DeleteFile("c:selfkill.exe");// 删除程序

}catch(e){}

删除自身之:批处理

相关知识:

%0的具体应用小结

在批处理中,%0即代表批处理文件本身。

在批处理中,使用命令“del %0”即可达到删除自身的目的。

利用此特性,批处理经常被用来做完全卸载工具。

当然,我们还可以利用扩展,获得更多的用途:

1.利用“%~dp0”可以得到该文件的路径;

CODE:@echo off

echo %~dp0

--------------------------------------

2.利用“%~nx0”可以得到文件名;

CODE:

@echo off

echo %~nx0

如我C盘有个文件夹名为 AAA 里面有很多文件

我想把 g:AAA 这个文件夹里的文件和文件夹全删除该怎么写批处理啊!

rd /s /q C:AAA

上面一行代码恰好能解决问题!(也删掉了AAA这个文件夹)详见解 释:

删除一个目录。

RMDIR [/S] [/Q] [drive:]path

RD [/S] [/Q] [drive:]path

/S 除目录本身外,还将删除指定目录下的所有子目录和

文件。用于删除目录树。

/Q 安静模式,带 /S 删除目录树时不要求确认

参考资料:rd/?

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/178026.html

更多阅读

如何制作批处理文件 excel宏入门教程

如何制作批处理文件——简介批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。今天就来教大家如何制作批处理文件,将复杂的工作变得更简单。如何制作批处理文件——工具/原料电脑如何制作批处理文件——

Bat批处理文件 批处理是什么意思

1. 批处理脚本批处理脚本就是把一个一个的命令外加一些逻辑控制组合在一起使其可一次都被执行的文本文件。在Linux上为Shell脚本,而在Windows上则为bat脚本。Windows下脚本命令能够执行需要同时满足以下两个条件:路径使用以驱动盘符开

声明:《批处理 和VB脚本 VBS vb过程写入vbs脚本》为网友命甴己造分享!如侵犯到您的合法权益请联系我们删除