`

批处理

    博客分类:
  • dos
 
阅读更多
批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称

,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批

处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后

面要提到的用批处理文件来给系统打补丁、批量植入后门程序等

1.echo 命令
            打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
            语法
            echo [{on|off}] [message]
            Sample:@echo off / echo hello world
2.@ 命令
            表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦



3.goto 命令
            指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
            语法:goto label (label是参数,指定所要转向的批处理程序中的行。)

:noparms
            echo Usage: monitor.bat ServerIP PortNumber
            goto end
            标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个

:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

4. Rem 命令
            注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改


            Rem Message
            Sample:@Rem Here is the descr1ption.

5.Pause 命令
            运行 Pause 命令时,将显示下面的消息:
            Press any key to continue . . .
            Sample:
            @echo off
            :begin
            copy a:*.* d:back
            echo Please put a new disk into driver A
            pause
            goto begin
            在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,

pause 命令会使程序挂起,以便您更换磁盘

6.Call 命令
            从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚

本或批处理文件外使用 Call,它将不会在命令行起作用。
参数
            [Drive:}[Path] FileName
            指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。

7.choice在xp不能用了,那我用什么代替呢?

8.批处理文件的参数

批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。

%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处

理命令本身,其它参数字符串用%1到%9顺序表示。

例2:C:根目录下有一批处理文件名为f.bat,内容为:
@echo off
format %1

如果执行C:\>f a:
那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a:

例3:C:根目录下一批处理文件名为t.bat,内容为:
@echo off
type %1
type %2

那么运行C:\>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面的命令将顺序地显示a.txt和b.txt文件的内容

9.

if

是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:

if [not] "参数" == "字符串" 待执行的命令

参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。

例:if "%1"=="a" format a:

if [not] exist [路径\]文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。

如: if exist c:\config.sys type c:\config.sys
表示如果存在c:\config.sys文件,则显示它的内容。

if errorlevel <数字> 待执行的命令

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,

根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命

令,否则运行下一句。

如if errorlevel 2 goto x2

else子句必须和if命令的尾端在同一行上,如下
if "a"=="b" (echo cxm
)else echo wl

10.
语法
find [/v] [/c] [/n] [/i] "string" [[Drive:][Path]FileName[...]]

参数
/v
显示所有不包含指定 string 的行。
/c
计算包含指定 string 的行并显示总数。
/n
将文件行号置于每行开头。
/i
指定搜索不区分大小写。
"string"
必需。指定要搜索的字符组。必须将 string 包含在引号之内(即,"string")。
[Drive:][Path] FileName
指定要在其中搜索指定字符串的文件的位置和名称。
/?
在命令提示符显示帮助。
注释
指定字符串
如果不使用 /i,find 将精确搜索指定的字符串。例如,find 命令认为字符“a”和“A”是不同的。但是,如果使用 /i,find 不

区分大小写,并将“a”和“A”视为同一个字符。

如果要搜索的字符串包含引号,必须对包含在字符串中的单引号用双引号引起来,即"StringContaining""QuotationMarks"。

将 find 用作筛选器
如果省略文件名,find 将用作筛选器,从标准输入源(通常是键盘、管道或重定向的文件)得到输入,然后显示任何包含字符串的

所有行。

命令语法次序
可以按任何顺序键入 find 命令的参数和命令行选项。

使用通配符
在用 find 命令指定的文件名或扩展名中不能使用通配符(* 和 ?)。要搜索使用通配符指定的一组文件中的字符串,可以在 for

命令中使用 find 命令。

将 /v 或 /n 与 /c 一起使用
如果在相同的命令行中指定 /c 和 /v ,find 将显示不包含指定字符串的行数。如果在相同的命令行中指定 /c 和 /n,find 将忽

略 /n。

在 find 中使用回车
find 命令不能识别回车。当使用 find 在包含回车的文件中搜索文本时,必须将搜索字符串限制在可以在两个回车之间找到的文本

,也就是不能被回车中断的字符串。例如,“tax”与“file”之间出现回车时,find 不会报告找到“tax file”字符串。

范例
要从 Pencil.ad 显示包含字符串“Pencil Sharpener”的所有行,请键入:

find "Pencil Sharpener" pencil.ad

要查找将文字包含在引号之内的字符串,必须首先将整个字符串用引号围绕起来。其次,每个包含在字符串内的引号必须使用双引号

。要在 Report.doc 中查找“The scientists labeled their paper ‘for discussion only.’It is not a final report.”,请

键入:

find "The scientists labeled their paper ""for discussion only."" It is not a final report." report.doc

如果要搜索一组文件,可以使用带有 for 命令的 find 命令。要在当前目录中搜索包含 .bat 扩展名以及包含“PROMPT”字符串的

文件,请键入:

for %f in (*.bat) do find "PROMPT" %f

要搜索硬盘以便在 C 驱动器上查找和显示包含字符串“CPU”的文件名,请使用管道号 (|) 将 dir 命令的结果重新定向到如下所示

的 find中:

dir c:\ /s /b | find "CPU"

因为 find 搜索区分大小写并且 dir 产生的输出是大写的,所以必须用大写字母键入字符串“CPU”或者将 /i 命令行选项与 find

一起使用。

11.netstat /?
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-t] [-v] [interval]
  -a            显示所有连接和监听端口。
  -b            显示包含于创建每个连接或监听端口的
                可执行组件。在某些情况下已知可执行组件
                拥有多个独立组件,并且在这些情况下
                包含于创建连接或监听端口的组件序列
                被显示。这种情况下,可执行组件名
                在底部的 [] 中,顶部是其调用的组件,
                等等,直到 TCP/IP 部分。注意此选项
                可能需要很长时间,如果没有足够权限
                可能失败。
  -e            显示以太网统计信息。此选项可以与 -s
                选项组合使用。
  -n            以数字形式显示地址和端口号。
  -o            显示与每个连接相关的所属进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto 可以是
                下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
                如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:
                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
  -r            显示路由表。
  -s            显示按协议统计信息。默认地,显示 IP、
                IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
                -p 选项用于指定默认情况的子集。
  -t            显示当前连接卸载状态。
  -v            与 -b 选项一起使用时将显示包含于
                为所有可执行组件创建连接或监听端口的
                组件。
  interval      重新显示选定统计信息,每次显示之间
                暂停时间间隔(以秒计)。按 CTRL+C 停止重新
                显示统计信息。如果省略,netstat 显示当前
                配置信息(只显示一次)

如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是手里没有完善的工具来检测是不是真有这样的事情发生,那可

以使用Windows自带的网络命令来看看谁在连接你的计算机。具体的命令格式是:netstat -an 这个命令能看到所有和本地计算机建

立连接的IP,它包含四个部分——proto(连接方式)、local address(本地连接地址)、foreign address(和本地建立连接的地址)、

state(当前端口状态)。通过这个命令的详细信息,我们就可以完全监控计算机上的连接,从而达到控制计算机的目的。

不带任何参数,则显示本机目前活动网络连接和监听端口

每个连接信息包括四项:Proto:协议类型;Loacl Address:本地地址;Foreign Address:外部地址;State:状态。

TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接。这和前面讲到的协议完全不同。前面讲的所

有协议都只是发送数据而已,大多数都不关心发送的数据是不是送到,UDP尤其明显,从编程的角度来说,UDP编程也要简单的多---

-UDP都不用考虑数据分片。
书中用telnet登陆退出来解释TCP协议连接的建立和中止的过程,可以看到,TCP连接的建立可以简单的称为三次握手,而连接的中止

则可以叫做四次握手。
1.连接的建立
在建立连接的时候,客户端首先向服务器申请打开某一个端口(用SYN段等于1的TCP报文),然后服务器端发回一个ACK报文通知客户端

请求报文收到,客户端收到确认报文以后再次发出确认报文确认刚才服务器端发出的确认报文(绕口么),至此,连接的建立完成。

这就叫做三次握手。如果打算让双方都做好准备的话,一定要发送三次报文,而且只需要三次报文就可以了。
可以想见,如果再加上TCP的超时重传机制,那么TCP就完全可以保证一个数据包被送到目的地。
2.结束连接
TCP有一个特别的概念叫做half-close,这个概念是说,TCP的连接是全双工(可以同时发送和接收)连接,因此在关闭连接的时候,

必须关闭传和送两个方向上的连接。客户机给服务器一个FIN为1的TCP报文,然后服务器返回给客户端一个确认ACK报文,并且发送一

个FIN报文,当客户机回复ACK报文后(四次握手),连接就结束了。

12.与findstr命令相比,find的功能确实有限得多,仅仅因为不支持正则表达式这一点,就有不少人把它视为鸡肋,从而遭到无情的

抛弃。

  然而,find并非一无是处,凭借自己的独门绝技,在与findstr的竞争中,它挣得了一席之地。

  这些独门绝技是什么呢?(感谢BatCoder的提醒和zqz0012005的补充)

  1、统计含指定字符串的总行数。find /c "abc" test.txt可以统计test.txt中含有字符串abc的总行数,而findstr则没有直接

提供该功能,需要配合for语句才能实现;
  2、find可以读取Unicode格式的文本,而findstr则不行;
  3、find可以过滤某些特殊字符,而findstr则不行,比如,我们在使用fsutil fsinfo drives语句查询磁盘分区的时候,如果想

让盘符分行显示而不是显示在同一行上的时候(这在用for语句提取盘符的时候很有用),find可以大显身手,而findstr只能干瞪眼

了,具体语句为: 复制内容到剪贴板
代码:
fsutil fsinfo drives|find /v ""


findstr 是 Windows 自带的一个实用程序,用来查找文件中的字符串,支持正则表达式。

命令行如下:

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]
        strings [[drive:][path]filename[ ...]]

/B        在一行的开始配对模式。
/E        在一行的结尾配对模式。
/L        按字使用搜索字符串。
/R        将搜索字符串作为一般表达式使用。
/S        在当前目录和所有子目录中搜索
              匹配文件。
/I         指定搜索不分大小写。
/X        打印完全匹配的行。
/V        只打印不包含匹配的行。
/N        在匹配的每行前打印行数。
/M        如果文件含有匹配项,只打印其文件名。
/O        在每个匹配行前打印字符偏移量。
/P        忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr   指定有十六进位数字的颜色属性。请见 "color /?"
/F:file   从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file   从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir    查找以分号为分隔符的目录列表
strings   要查找的文字。
[drive:][path]filename
            指定要查找的文件。

除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找
"hello there"。

netstat -aon | findstr /IC:"udp tcp"
冒号后面不能有空格,必须有引号引起来

一般表达式的快速参考:
.        通配符: 任何字符
*        重复: 以前字符或类别出现零或零以上次数
^        行位置: 行的开始
$        行位置: 行的终点
[class] 字符类别: 任何在字符集中的字符
[^class] 补字符类别: 任何不在字符集中的字符
[x-y]    范围: 在指定范围内的任何字符
\x       Escape: 元字符 x 的文字用法
\<xyz    字位置: 字的开始
xyz\>    字位置: 字的结束


DOS在运行批处理时,
会依次执行批处理中的每条命令,
并且会在显示器上显示,
如果你不想让它们显示,
可以加一个“echo off”

当然,“echo off”也是命令,
它本身也会显示,
如果连这条也不显示,
就在前面加个“@”。
分享到:
评论

相关推荐

    经典批处理大全(几乎包含全部批处理命令)

    批处理是一种在Windows操作系统中广泛使用的自动化工具,它允许用户编写一系列命令,形成一个批处理文件(.bat或.cmd扩展名),然后一次性执行这些命令,极大地提高了工作效率。本压缩包“经典批处理大全”显然是一...

    BAT批处理脚本-提示窗口进度条-批处理弹窗提示.zip

    在IT行业中,批处理脚本是一种非常实用的自动化工具,特别是在Windows系统环境下。"BAT"是批处理文件的扩展名,这些文件包含了可执行的DOS命令序列,用于执行一系列操作,无需用户交互。本资源"BAT批处理脚本-提示...

    批处理文件编程指南

    批处理文件编程是一种在DOS或Windows环境下使用命令行脚本执行一系列操作的方法。它主要依赖于几个核心命令,如`echo`、`@`、`call`、`pause`和`rem`,以及更高级的`if`、`goto`、`choice`和`for`等。 1. `echo`: ...

    经典批处理,系统优化,网路优化等批处理

    批处理是一种在计算机科学中广泛使用的自动化技术,它允许用户预先编写一系列命令,然后一次性执行这些命令,而无需逐个手动输入。在这个压缩包中,我们聚焦于"经典批处理",这通常涉及到Windows操作系统中的批处理...

    打印机错误解决批处理

    本文将深入探讨“打印机错误解决批处理”的概念,以及如何利用批处理脚本来解决打印机故障。 首先,我们需要了解打印机错误的类型。打印机错误可能源自硬件故障、驱动程序问题、打印队列堵塞或网络连接问题。常见的...

    dos批处理命令大全

    "dos批处理命令大全" dos批处理命令是dos操作系统中的一种批处理语言,用于自动执行一系列命令。以下是dos批处理命令的详细解释和示例: 1. Echo 命令 Echo 命令用于打开回显或关闭请求回显功能,或显示消息。...

    可视化批处理编辑器与实例

    可视化批处理编辑器是一种强大的工具,它允许用户通过图形用户界面(GUI)创建、编辑和管理批处理脚本,而不是传统的命令行方式。这样的编辑器通常具有友好的拖放功能和预览机制,使得编写批处理命令变得直观且易于...

    手机批处理(在手机上运行的批处理软件)

    手机批处理,是一种在移动设备上实现自动化任务执行的技术,主要通过特定的软件来实现。在PC端,批处理通常指的是使用批处理脚本(如Windows的.bat或Linux的.sh文件),而在手机平台上,这样的功能可能由第三方应用...

    批处理文件启动Oracle服务

    批处理文件,又称为批处理脚本,是一种在Windows操作系统中批量执行命令的方法,能够极大地提高工作效率,尤其在需要重复执行相同或类似任务时。 在Oracle环境中,服务通常包括监听器(Listener)和服务(Service)...

    BAT批处理脚本-加密解密-解密.zip

    在IT行业中,批处理脚本是一种非常实用的自动化工具,特别是在Windows系统中,BAT脚本的应用广泛且功能强大。本文将深入探讨“BAT批处理脚本-加密解密-解密.zip”这一主题,以及如何利用它进行文件的加密与解密。 ...

    批处理阶段教程奥运最终版[英雄出品

    批处理阶段教程奥运最终版是由“英雄”出品的一份针对批处理技术的详细教程,适合零基础的学习者。批处理,又称批处理命令,是一种在计算机操作系统中预先编写好一系列命令,然后一次性执行这些命令的技术。它允许...

    自动批量拨号批处理.rar

    标题“自动批量拨号批处理.rar”所涉及的知识点主要集中在使用批处理脚本来实现自动化的宽带拨号连接。批处理是一种在Windows操作系统中执行一系列命令的文本文件,通常以.bat或.cmd为扩展名。在这个特定的例子中,...

    自动登录你的163邮箱 批处理

    在Windows操作系统中,批处理(Batch File)是一种简单的脚本语言,它允许用户通过命令行界面执行一系列连续的操作。 批处理脚本通常由一系列DOS命令组成,比如`net send`、`copy`、`del`等,这些命令可以自动化...

    批处理,超级好玩的批处理

    批处理(Batch Processing)是一种在计算机系统中批量处理任务的技术,尤其在早期的计算机系统中广泛应用。它允许用户一次性提交多个命令或者程序,系统会按照预定的顺序执行这些任务,而无需人工持续干预。在现代...

    Win11一键生成WinPE的批处理

    标题中的“Win11一键生成WinPE的批处理”指的是创建一个Windows预安装环境(Windows Preinstallation Environment,简称WinPE)的自动化过程,利用批处理脚本来简化操作。批处理是一种在DOS或Windows系统中运行一...

    BAT批处理脚本-访问共享.zip

    标题中的“BAT批处理脚本-访问共享.zip”指出这是一个关于使用批处理脚本来操作网络共享资源的主题。批处理脚本是基于Microsoft Windows操作系统的一种自动化工具,它允许用户通过编写一系列命令来执行一系列操作,...

    批处理文件夹权限修改

    批处理文件夹权限修改是一种高效的操作方式,尤其适用于管理大量文件夹访问权限的场景,例如在服务器维护中。本文将详细介绍批处理技术以及如何利用它来修改文件夹权限。 批处理(Batch Processing)是Microsoft ...

    批处理学习和批处理实例

    批处理是一种在Windows操作系统中广泛使用的自动化脚本技术,它允许用户通过编写一系列命令来执行多个操作,从而简化复杂的任务管理。批处理文件通常以`.cmd`或`.bat`为扩展名,这两种格式在功能上基本相同,都是...

    批处理批量文件改名

    在IT行业中,批处理批量文件改名是一种常见的文件管理任务,尤其对于处理大量文件时非常高效。批处理(Batch Processing)是计算机系统中的一种处理方式,它允许用户一次性提交多个命令或任务,由系统自动执行,无需...

    win10批处理自动关机、定时关机_win10_脚本_批处理_定时关机_自动关机_

    在Windows 10操作系统中,批处理(Batch)是一种简单而强大的工具,它允许用户通过编写脚本来自动化一系列命令执行。在这个场景中,"win10批处理自动关机、定时关机_win10_脚本_批处理_定时关机_自动关机_" 提供了三...

Global site tag (gtag.js) - Google Analytics